iT邦幫忙

2024 iThome 鐵人賽

DAY 14
0
Python

Python和R入門語法比較系列 第 14

07 Python 和 R 的 字串處理 [16th 鐵人 Day 14]

  • 分享至 

  • xImage
  •  

Python

接受的格式

a = '20210729'
b = '2021.7.29'
c = '2021/07/29'
d = '29/7/2021'
e = '29th July 2021'
f = '29th of July, 2021'

不接受的格式

a = '2021年7月29日'
b = '110年7月29日'
c = '1100729'
d = '110.7.29'
e = '110.07.29'
f = '110/7/29'

取代

a
'2021年7月29日' to '2021.7.29'--> 取代1

'2021年7月29日'.replace('年','.').replace('月','.').replace('日','.')
    '2021.7.29.'
a2 = '2021年7月29日'.replace('年','.').replace('月','.').replace('日','.')

b
'110年7月29日' to '2021年7月29日'--> 取代2

'110年7月29日'.replace('110', '2021')
    '2021年7月29日'
'110年7月29日'.replace('110', '2021').replace('年','.').replace('月','.').replace('日','.')
    '2021.7.29.'
b2 = '110年7月29日'.replace('110', '2021').replace('年','.').replace('月','.').replace('日','.')

c
'1100729' to '20210729'--> 取代3

'1100729'.replace('110','2021')
    '20210729'
c2 = '1100729'.replace('110','2021')

d
'110.7.29' to '2021.7.29'-->取代4

110+1911

將字串打散 .split( )

'110.7.29'.split('.')

取出110

'110.7.29'.split('.')[0]
    '110'

將 '110' 轉成 110 然後 +1911

int(110)
    110
int(110) +1911
    2021

將 2021 轉成 '2021'

str(2021)
    '2021'

用 '.' 將 '2021' 和 '7' 和 '29' 合併

'.'.join(['2021','7','29'])
    '2021.7.29'

e
'110.07.29' to '2021.07.29'-->練習 .split().join() 功能

'110.07.29'.split('.')
    ['110', '07', '29']
'110.07.29'.split('.')[0]
    '110'
s = '110.07.29'.split('.')[0]
s2 = int(s)+1911
str(s2)
    '2021'
'.'.join([str(s2),'07','29'])
    '2021.07.29'

f
'110/07/29' to '2021.07.29'-->練習 .split().join() 功能

'110/07/29'.split('/')
    ['110', '07', '29']
'110/07/29'.split('/')[0]
    '110'
s = '110/07/29'.split('/')[0]
int(s)+1911
    2021
s2 = int(s)+1911
str(s2)
    '2021'
'/'.join([str(s2),'07','29'])
    '2021/07/29'

轉成日期格式

import pandas as pd
s = '/'.join([str(s2),'07','29'])
pd.to_datetime(s)
    Timestamp('2021-07-29 00:00:00')

R

#### 接受的格式 ####
a = '2021年7月29日'

as.Date(a, '%Y年%m月%d日')

#### 不接受的格式 ####
b = '110年7月29日'
c = '1100729'
d = '110.7.29'
e = '110.07.29'
f = '110/7/29'

#### 取代 #### 
gsub(pattern='110',
     replacement='2021',
     x = '110年7月29日')

s = gsub(pattern='110',
     replacement='2021',
     x = '110年7月29日')

as.Date(s, '%Y年%m月%d日')

#### 110+1911 ####
#將字串打散
strsplit('110.7.29','[.]')
strsplit('110/7/29','[/]')

#取出110
strsplit('110.7.29','[.]')[[1]]
strsplit('110.7.29','[.]')[[1]][1]

strsplit('110.7.29','[.]')[[1]][1]+1911

#將"110轉成110 然後+1911
s = strsplit('110.7.29','[.]')[[1]][1]
as.integer(s)+1911
s2 = as.integer(s)+1911

#將 2021 轉成"2021" 或者不用?
#還記得嗎?R會自動轉成文字
paste0(s2,'.7','.29')

s = paste0(s2,'.7','.29')

as.Date(s, '%Y.%m.%d')

內容預告:

08 [R] 用Regular Expression(正規表示法)處理文字

08 [python] 用Regular Expression(正規表示法)處理文字

09 [python] 表格 dataframe.insert插入欄位 和 字串處理 Series.str.split

10 [python] pandas的欄列選擇工具 dataframe.loc[ ]和.iloc[ ]

10 [R] r的dataframe欄列選擇方式

11 [python] 取得欄位位置

11 [R] 取得欄位位置

12 [python] 布林值和表格條件選取

12 [R] 布林值和表格條件選取


上一篇
06 日期 in Python and R [16th 鐵人 Day 13]
下一篇
08 [R] 用Regular Expression(正規表示法)處理文字 [16th 鐵人 Day 15]
系列文
Python和R入門語法比較30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言