在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中


回首忆惘然
浏览 172回答 2
2回答

胡子哥哥

您需要将编写器放在第一个循环之外。每次循环抛出时,它都会打开并重写文件您正在定义另一个问题,并在循环内调用toto,以便使用最后一个消息值来调用它。import reimport csvimport stringwith open('test.csv', 'r') as f:&nbsp; &nbsp; file = csv.reader(f)&nbsp; &nbsp; writer = csv.writer(open('result.csv', 'w'))&nbsp; &nbsp; def toto(message):&nbsp; &nbsp; &nbsp; &nbsp; message = message.lower()&nbsp; &nbsp; &nbsp; &nbsp; p = re.compile('|'.join(map(re.escape, string.punctuation)))&nbsp; &nbsp; &nbsp; &nbsp; no_punct = p.sub(' ', message)&nbsp; &nbsp; &nbsp; &nbsp; for row in no_punct:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; writer.writerow(row)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return writer&nbsp; &nbsp; &nbsp;&nbsp; &nbsp; for line in file:&nbsp; &nbsp; &nbsp; &nbsp; print line&nbsp; &nbsp; &nbsp; &nbsp; message=''.join(line)&nbsp; &nbsp; print(toto(message))
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python