re.sub 用于 CSV 文件

2024-04-25 04:37:05 发布

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

我收到此代码的错误。它是“TypeError:expected string or buffer”。我环顾四周,发现错误是因为我路过re.sub公司一个列表,它不需要列表。但是,我无法找出如何将我的行从csv文件改为它可以读取的内容。在

我正在尝试将csv文件中的所有句点改为逗号。这是我的代码:

import csv  
import re  

in_file = open("/test.csv", "rb")  
reader = csv.reader(in_file)  
out_file = open("/out.csv", "wb")  
writer = csv.writer(out_file)  

for row in reader:   
    newrow = re.sub(r"(\.)+", ",", row)  
    writer.writerow(newrow)

in_file.close()  
out_file.close()

如果这件事已经有人回答了,我很抱歉。当然有很多关于这个错误的答案,但是我不能让它们中的任何一个与我的csv文件一起工作。另外,作为补充说明,这最初是一个.xslbexcel文件,为了能够使用它,我将它转换为csv。有必要吗?在


Tags: 文件csv代码inimportre列表错误
2条回答

您可以使用列表理解对row中的每一项应用替换

for row in reader:   
    newrow = [re.sub(r"(\.)+", ",", item) for item in row]
    writer.writerow(newrow)

for row in reader不返回单个元素来解析它,而是返回row中的元素列表,因此您必须解压该列表并分别解析每个项,就像@Trii所示:

[re.sub(r'(\.)+','.',s) for s in row]

相关问题 更多 >