rep后无法写入CSV

2024-09-29 23:29:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个输入文件,在其中进行字符串替换操作。你知道吗

我逐个单元格读取文件,替换字符串,然后将其写回一个新的CSV文件。你知道吗

input_file = open('/Users/tcssig/Desktop/unstacked2.csv', 'r', encoding='utf-8')
output_file = open('/Users/tcssig/Desktop/unstacked3.csv', 'w', encoding='utf-8')
writer = csv.writer(output_file , delimiter=' ')
reader = csv.reader(input_file)
for row in reader:
    for string in row:
       data = [string.replace('read','write')]
       print(data)
       writer.writerow(data)

上面的代码运行良好,但我得到一个空的输出文件。你知道吗

Example of data :

    reading reading reading reading
interval        0   1   2   3

who axis


Mikael  X   0   10  20  30

Mikael  Y   50  40  30  20

Mikael  Z   100 90  80  70

Mike    X   0   0.1 0.2 0.3

Mike    Y   0.5 0.4 0.3 0.2

迈克Z 10.9 0.8 0.7

我错过了什么?你知道吗


Tags: 文件csv字符串inputdataopenusersencoding
2条回答

输入文件的内容:

"Roll No" English read Science
"Roll No" English Write Science

代码有问题:

  1. @Scott所述,文件未关闭。你知道吗
  2. 您正在按for string in row:读取单元格,并在那里替换字符串。但在替换之后,您正在将该单元格作为行写入文件中。例如,输出文件和代码文件:

    卷号

    英语

    阅读

    科学

这是由于上述原因,即您正在写入每个单元格。你知道吗

如何让它工作?

与代码内联的注释

import csv
input_file = open('mark.csv', 'r', encoding='utf-8')
output_file = open('result.csv', 'w')
writer = csv.writer(output_file , delimiter=' ', encoding='utf-8')
reader = csv.reader(input_file)
for row in reader:
    #Initailize empty list for each row
    data = []
    for string in row:
       #Replace and add to data list
       data.append(string.replace('read','write'))
    #Now write complete
    writer.writerow(data)

input_file.close()
output_file.close()

输出:

"Roll No" English write Science

"Roll No" English Write Science

您可以在没有csv模块的情况下实现相同的功能。你知道吗

with open("mark.csv") as input_file:
    with open("result.csv",'w') as output_file:
        for line in input_file:
            new_line = (line.replace("read","write")).replace(","," ")
            output_file.write(new_line)

关闭文件:

output_file.close()
input_file.close()

也可以看到这个关于使用上下文管理器的答案 https://stackoverflow.com/a/441446/4663466

相关问题 更多 >

    热门问题