[英]writing the rows of a csv file to another csv file
我想将 csv 文件的行写入另一个 csv 文件。 我还想更改每一行的内容,如果该行为空,则它保持为空,如果不是,则省略字符串开头和结尾的任何空格。 原始 csv 文件有 1 列和 65422771 行。
我编写了以下内容以将原始 csv 文件的行写入新文件:
import csv
csvfile = open('data.csv', 'r')
with open('data 2.csv', "w+") as csv_file1:
writer = csv.writer(csv_file1)
count = 0
for row in csvfile:
row = row.replace('"', '')
count+= 1
print(count)
if row.strip() == '':
writer.writerow('\n')
else:
writer.writerow(row)
但是,当制作新的 csv 文件时,显示它有 130845543 行(=计数)。 新的csv文件大小也是原来的2倍? 如何创建具有完全相同行数但对它们进行上述更改的新 csv 文件?
尝试这个:
import csv
with open('data.csv', 'r') as file:
rows = [[row[0].strip()] for row in csv.reader(file)]
with open('data_out.csv', "w", newline = "") as file:
writer = csv.writer(file)
writer.writerows(rows)
此外,正如@tripleee 所提到的,您的文件非常大,因此您可能希望分块读取/写入它。 您可以为此使用 pandas。
import pandas as pd
chunksize = 10_000
for chunk in pd.read_csv('data.csv', chunksize = chunksize, header = None):
chunk[0] = chunk[0].str.strip()
chunk.to_csv("data_out.csv", mode="a", header = False, index = False)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.