[英]Write a result of a function in a csv
我正在嘗試在csv中寫一個函數的結果。 不幸的是,沒有熊貓。
csv文件輸入:
Hello all well?
today is cold!
I have not had lunch yet
He does not have many brothers or sisters.
We are sick
腳本:
import re
import csv
import string
with open('teste_csv.csv', 'r') as f:
file = csv.reader(f)
for line in file:
message = ''.join(line)
def toto(message):
message = message.lower()
p = re.compile('|'.join(map(re.escape, string.punctuation)))
no_punct = p.sub(' ', message)
writer = csv.writer(open('result.csv', 'w'))
for row in no_punct:
writer.writerow(row)
return writer
print(toto(message))
在我的終端,我有<_csv.writer對象在0x7fee60e57c50>和我的result.csv我只有一行寫'w'。 我希望每一行都在我的result.csv中
你不斷刪除文件,因為每次調用toto
都會打開result.csv
進行寫入,因此只剩下一次寫入。 您需要打開一次文件,並創建一次wirter。 您還需要為此重新定義一次函數:
import re
import csv
import string
def toto(message,writer):
message = message.lower()
p = re.compile('|'.join(map(re.escape, string.punctuation)))
no_punct = p.sub(' ', message)
for row in no_punct:
writer.writerow(row)
with open('teste_csv.csv', 'r') as f:
writer = csv.writer(open('result.csv','w'))
file = csv.reader(f)
for line in file:
message = ''.join(line)
toto(message,writer)
您需要將編寫器放在第一個循環之外。 每次循環時拋出它都會打開並重寫文件
您正在定義的另一個問題,並在循環內調用toto,因此它將使用最后一個消息值進行調用。
import re
import csv
import string
with open('test.csv', 'r') as f:
file = csv.reader(f)
writer = csv.writer(open('result.csv', 'w'))
def toto(message):
message = message.lower()
p = re.compile('|'.join(map(re.escape, string.punctuation)))
no_punct = p.sub(' ', message)
for row in no_punct:
writer.writerow(row)
return writer
for line in file:
print line
message=''.join(line)
print(toto(message))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.