2017-04-12 75 views
0

假設我有K和V.ķ包含一個元組的Python編寫每個字符,而不是每串到文件

('String1', 'String2') 

,而V是浮點數

0.00324 

我是什麼試圖做的是既寫入一個文本文件中是這樣的:

('String1', 'String2') 0.00324 

String1 String2 0.00324 

我的代碼是這樣的:

for k,v in bigrams_frequency.items(): 
    number_unigrams = vocabulary.count(k[0]) 
    if number_unigrams == 0: 
     continue; 
    v = v/number_unigrams 
    print(k,v) 
    f2.write('\n'.join('%s %s' % (k,v))) 

然而,當我打開文本文件時,輸出看起來是這樣的:

(
' 
S 
t 
r 
i 
n 
g 
1 
. 
. 
. 

什麼引起的Python打印這樣嗎?我該如何解決?

+0

你試圖格式化既'K'和'V'成一個大的字符串和寫入該文件的大字符串? – WhatsThePoint

+0

'f2.write('%s%d \ n「%(''.join(k),v))' – PYPL

+0

yeah @WhatsThePoint,在寫入文本文件之前使用格式化程序 –

回答

2

正如評論中所討論的是代碼;

K=("string1","string2") 
V=0.00324 
file = open("test.txt","a") 
file.write("{} {}".format(K,V)) 
file.close() 

它產生這個輸出文件,你在你的問題中指定爲所需的輸出;

('string1', 'string2') 0.00324 

寫入文件時,因爲這樣你不需要明確地關閉它,以便爲您的例子這將是一個with語句自動關閉文件,你也可以使用一個with聲明;

with open("test","a") as file: 
    file.write("{} {}".format(K,V)) 

只是不要忘記縮進,你需要的文件,因爲只要它不是縮進了該文件將關閉

0

您對str.join(xx)函數有錯誤的理解。這個函數「返回一個字符串,它是可迭代xx中字符串的連接」。你可以使用str.format()來代替。

0

問題出在這裏 - f2.write('\n'.join('%s %s' % (k,v)))
連接方法需要參數中的迭代(如列表)。當你給它一個字符串'String1 String2 Float'時,它會用一個新行連接每兩個字母。
似乎所有你想要做的是寫在一個新的生產線的每個條目(不是每個字母!),所以喜歡的東西f2.write('{} {}\n'.format(k, v))
更換線如果您有沒有碰到過format來呢,它here讀了。

0

你可以這樣做:

for k,v in bigrams_frequency.items(): 
    # Other code 
    f2.write('{}{}\n'.format(join(k),v)) 

而且,它會就好了。

相關問題