2015-11-19 46 views
-3

我想分裂一個字符串與領先的0,我得到了很多無效的令牌。我知道python會將前導0解釋爲八進制數。 我想做的是將「2005年1月1日」分成['Jan-01','2005']。我試圖將其轉換爲字符串,但我仍然有相同的錯誤。我做的是,我如何分裂與領先的蟒蛇0

def split_fileB(line): 
    first=str(line.split(',')) 
    return first 

有誰知道如何保持格式?

+2

你的問題自相矛盾。 「我想要做的就是拆分」 - 這是一個字符串操作 - 「''Jan-01,2005''」 - 看起來像一個字符串,然後突然:「我試圖將它轉換爲字符串」。那麼它是什麼? –

+0

''「Jan-01,2005」.split(',')'正常工作。如果這不是您所看到的實際數據,則需要提供更多信息。你需要舉一個完整的例子,因爲這工作得很好。 – Dan

+0

'str(some_string.split(','))'會給你一個字符串化的列表,這幾乎肯定不是你想要的。 –

回答

0

您可以使用python regexp模塊拆分字符串,並查找由一個或多個數字組成的子字符串的出現次數。

import re 
pattern = re.compile("([0-9]+)") 

s = "foo bar Jan-01 03-56, blah" 
toks = pattern.split(s) 

# toks is ['foo bar Jan-', '01', ' ', '03', '-', '56', ', blah'] 

如果您的格式正是「MMM-DD,YYYY」,那麼你可以使用像這樣(改編自問題)。我假設你正在試圖從中提取一天?

def get_day_number(line): 
    month_day, year = line.split(",", 1) # '1' splits at most once 
    month, day = month_day.split("-", 1) 
    return int(day, 10) 

不會發生你所提到的八進制數的問題,直到您嘗試將字符串轉換爲使用int(s)整數。您可以通過明確指定基數來強制整數轉換使用十進制,這是python中的一個常規良好實踐。

s = "010" 
i = int(s, 10) 
print i # 10