簡體   English   中英

反斜杠在Python中以Unicode字符串轉發

[英]Backslash to forward in unicode string in Python

我有一個包含日期的電子表格,通常以“ 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)

我該如何解決這個問題?

當您從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所建議的那樣,您也可以像這樣使用原始的ing。 data_prob_raw=r'08\\09\\2014' 注意前面的rr告訴Python將反斜杠視為文字反斜杠,而不是解析轉義字符。

要僅在字符串中處理反斜杠,只需將其放置兩次。 它是轉義符,因此以下替換就足夠了:

data_prob_raw=data_prob_raw.replace('\\', '/')

您不需要執行替換。 datetime可以解析您指定的任何日期格式:

>>> data = ur'08\09\2014'
>>> from datetime import datetime
>>> datetime.strptime(data,ur'%m\%d\%Y')
datetime.datetime(2014, 8, 9, 0, 0)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM