我有一个包含日期的电子表格,通常按照格式" DD \ MM \ YYYY"编码为字符串,格式为08 \ 09 \ 2014。我使用的函数将数据作为unicode返回,我使用Python 2.7。所以,我从:
开始> data_prob_raw
08\09\2014
要将字符串转换为日期时间对象(datetime.parser.parse())我需要一个没有' \'的字符串,但我找不到删除或替换它的方法与' /'有问题的人物。 我已经尝试过使用unicode代码:
data_prob_raw=data_prob_raw.replace(r'\x81', '/201')
data_prob_raw=data_prob_raw.replace(u'\x81', '/201')
只是一个字符串:
data_prob_raw=data_prob_raw.replace('\201','/201')
但它并没有改变任何事情:
08\09\2014
解码字符串:
data_prob_raw=data_raw_unic.encode('ascii')
但是\ 201使用了128个ascii字符:
UnicodeDecodeError: 'ascii' codec can't decode byte 0x81 in position 0: ordinal not in range(128)
我该如何解决这个问题?
答案 0 :(得分:2)
当您从python将文件读入文件时,您应该获得一个转义字符串。
我有一个名为test.txt
的文件,内容为01\01\2010
>>> with open(r'C:\users\john\desktop\test.txt') as f:
s = f.read()
>>> s
'01\\01\\2010'
>>> s.replace('\\', '/')
'01/01/2010'
我在字符串上使用.replace
没问题。可能发生的是您正在直接创建变量,测试功能,并在应该使用data_prob_raw='08\09\2014'
进行测试或从文件中读取日期时分配data_prob_raw='08\\09\\2014'
。
正如zondo所说,你也可以使用这样的原始刺痛; data_prob_raw=r'08\09\2014'
。注意前面的r
,r
告诉Python将反斜杠视为文字反斜杠而不是解析转义字符。
答案 1 :(得分:0)
要简单地处理字符串中的反斜杠,您只需要将它放两次。它是转义字符,因此以下替换应该足够了:
data_prob_raw=data_prob_raw.replace('\\', '/')
答案 2 :(得分:0)
您不需要进行更换。 datetime
可以解析您指定的任何日期格式:
>>> data = ur'08\09\2014'
>>> from datetime import datetime
>>> datetime.strptime(data,ur'%m\%d\%Y')
datetime.datetime(2014, 8, 9, 0, 0)