gpt4 book ai didi

Python - 用于将某些行写入新文件的 CSV 模块

转载 作者:行者123 更新时间:2023-11-28 21:49:25 25 4
gpt4 key购买 nike

我有一个小问题。我正在尝试创建一个脚本,该脚本采用大型 (~2gb) csv 文件(id、整数、整数),按第一个整数对它们进行排序,然后将前 x 行(由用户定义)写入新文件).

我能够让排序功能按要求工作并且提取前 X 行也能工作,但我不知道如何让这个输出写入 csv。为了检查它是否正常工作,我添加了一个打印功能,看起来一切正常。

我觉得我在 csv 模块中缺少一个非常基本的概念,但我不知道它是什么!

import csv
import operator

def csv_to_list(csv_file, delimiter=','):

with open(csv_file, 'r') as csv_con:
reader = csv.reader(csv_con, delimiter=delimiter)
return list(reader)

def sort_by_column(csv_cont, col, reverse=True):

header = csv_cont[1]
body = csv_cont[1:]
if isinstance(col, str):
col_index = header.index(col)
else:
col_index = col
body = sorted(body,
key=operator.itemgetter(col_index),
reverse=reverse)
#body.insert(0, header)
return body

def print_csv(csv_content):
for row in csv_content:
row = [str(e) for e in row]
print('\t'.join(row))

def write_csv(dest, csv_cont):
with open(dest, 'w') as out_file:
writer = csv.writer(out_file, delimiter=',')
for row in csv_cont:
writer.writerow(row)

csv_cont = csv_to_list(input_hep.csv)
row_count = sum(1 for row in csv_cont)
num_rows = int(input("Skim size?: "))
output_file = input("Output: ")

csv_sorted = sort_by_column(csv_cont, 1)
for row in range(num_rows):
print(csv_sorted[row])

我的主要想法是尝试:

with open(output_file+'.csv','w') as f:
writer = csv.writer(f, delimiter =',')
for row in range(num_rows):
writer.writerow(row)

但随后我收到“_csv.Error:预期可迭代,而非 int”错误。我明白为什么,但我很难理解如何让输出(打印出来)写在 csv 中。任何提示或指示将不胜感激。

最佳答案

如果你的数组是一个多维列表,你可以使用writerows直接不迭代

with open(output_file+'.csv','w') as f:
writer = csv.writer(f, delimiter =',')
writer.writerows(sorted_csv_cont)

假设您的列表采用以下格式

[
["R1_C1","R1_C2"],
["R2_C1","R2_C2"]
]

关于Python - 用于将某些行写入新文件的 CSV 模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33550125/

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