2013-12-14 23 views
1

是否可以寫入不帶引號和空格的文件字符串(列表中任何類型的空格)?Python - 如何寫入字符串文件不帶引號和空格?

例如,我有這樣的名單:

['blabla', 10, 'something']

我怎麼能寫入文件,所以在文件中的行會變成這樣:

blabla,10,something

現在每次我把它寫到文件我得到這個:

'blabla', 10, 'something'

那麼我需要用空符號替換'' '。也許有一些竅門,所以我不應該一直需要更換它?

+1

你怎麼寫歸檔?這應該只會發生,如果你使用一些自動轉義的東西像csvwriter。 – kalhartt

回答

5

這將工作:

lst = ['blabla', 10, 'something'] 
# Open the file with a context manager 
with open("/path/to/file", "a+") as myfile: 
    # Convert all of the items in lst to strings (for str.join) 
    lst = map(str, lst) 
    # Join the items together with commas     
    line = ",".join(lst) 
    # Write to the file 
    myfile.write(line) 

輸出文件:

blabla,10,something 

不過請注意,上面的代碼可以簡化爲:

lst = ['blabla', 10, 'something'] 
with open("/path/to/file", "a+") as myfile: 
    myfile.write(",".join(map(str, lst))) 

此外,你可能想換行增加的結束您寫入文件的行:

myfile.write(",".join(map(str, lst))+"\n") 

這會導致對文件的每個後續寫入都放在自己的行上。

+0

謝謝。有用。 – Andrius

1

你試過類似的東西嗎?

yourlist = ['blabla', 10, 'something'] 
open('yourfile', 'a+').write(', '.join([str(i) for i in yourlist]) + '\n') 

', '.join(...)採取字符串列表,並用繩子把它粘(', '

[str(i) for i in yourList]列表轉換成字符串列表(以處理號碼)

+0

打開文件後你應該關閉文件...我認爲打開(文件)作爲f:etc .etc會更好。 –

+0

由於'open'只是在行尾(沒有變量來存儲文件對象),所以它的析構函數應該自動調用'close()'函數。至少我認爲它應該以這種方式工作......但你可能是對的,畢竟它取決於python的垃圾回收器 – Cyrille

+0

mmm我試過了,但它不起作用(在你的列表中有一個錯誤,而不是你的列表),而.txt用空格分隔 –

1

初始化所有項目列表中的一個空字符串Ĵ
,串聯到j這在for循環創建沒有空間,
印刷STR(J)將刪除該行情

j='' 
    for item in list: 
     j = j + str(item) 
    print str(j) 
+0

雖然這個答案可能是正確的,但請添加一些解釋。賦予基礎邏輯比賦予代碼更重要,因爲它可以幫助OP和其他讀者自己解決這個問題和類似的問題。 – CodeMouse92

相關問題