gpt4 book ai didi

python - 使用字段数将文件拆分为更小的文件

转载 作者:行者123 更新时间:2023-11-28 22:02:06 24 4
gpt4 key购买 nike

我很难将大型 (50GB) csv 文件分成较小的部分。每行有几千个字段。一些字段是双引号中的字符串,其他字段是整数、小数和 bool 值。

我想逐行解析文件并按每行中的字段数拆分。这些字符串可能包含几个逗号(例如 ),以及一些空字段。

,,1,30,50,"Sold by father,son and daughter for $4,000" , ,,,, 12,,,20.9,0,

我试过用

perl -pe'  s{("[^"]+")}{($x=$1)=~tr/,/|/;$x}ge  '  file >> file2

将引号内的逗号改为|但这没有用。我打算用

awk -F"|" conditional statement appending to new k_fld_files file2

请问有更简单的方法吗?我正在查看 python,但我可能需要一个实用程序来逐行流式处理文件。

最佳答案

使用 Python - 如果您只想解析包含嵌入式定界符的 CSV,并使用新的定界符流出,那么可以这样:

import csv
import sys
with open('filename.csv') as fin:
csvout = csv.writer(sys.stdout, delimiter='|')
for row in csv.reader(fin):
csvout.writerow(row)

否则,让它做各种事情也不会更难。

每列输出到文件的示例(未测试):

cols_to_output = {}
for row in csv.reader(fin):
for colno, col in enumerate(row):
output_to = cols_to_output.setdefault(colno, open('column_output.{}'.format(colno), 'wb')
csv.writer(output_to).writerow(row)

for fileno in cols_to_output.itervalues():
fileno.close()

关于python - 使用字段数将文件拆分为更小的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11997279/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com