簡體   English   中英

在csv中寫入函數的結果

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM