2013-10-11 34 views
-1

我的問題是這樣的:['大衛先生',23,'城市']成爲['大衛先生',23,'City']。你能建議如何解決它嗎?爲什麼['David'先生,23歲,'City']在Python中成爲[''Mr'David',23,'City']?

這裏是一些代碼,如果你想看到..

path = r'D:/ListFile' 
rdata = open(path,'rb') 
ListNow = [] 
for ch in rdata: 
    ListNow.append(ch) 
print ListNow 

我所試圖做的事:我從文件中讀取它,並嘗試將其重寫存儲器(因爲我不知道如何與存儲在其中的磁盤上的文件列表工作?)

回答

0

當您在蟒紋的列表,它使用repr重現的價值,這將代表每個項目作爲一個Python字符串文字。如果你想單獨打印每一個值,你可以這樣做:

for item in ListNow: 
    print item 

(!下面arshajii的評論也可以說是更清楚,順便感謝)

+2

只是爲了澄清,當你打印一個列表時,它*不會*在列表本身使用'str',而是'list' '__str__'使用列表中所有元素的'repr'。 – arshajii

1

我認爲你有一個文件D:\listfile與包含python列表的行如

['Mr David',23,'City'] 

要將其讀入列表的列表。但是,當您遍歷該文件時,每行都被讀取爲一個字符串。所以ch是一個字符串,但你期待它成爲一個列表。

如果您信任列表文件的內容包含安全表達式,你可以得到蟒蛇評估串

ListNow.append(eval(ch)) 

這是危險的,如果在listfile中不被信任(例如,如果它包含了收集的數據來自網站),因爲列表文件中的惡意代碼將被運行。在這種情況下,你將不得不分析字符串,從ch.split(',')開始