gpt4 book ai didi

python - 迭代并行列表并将一个列表中的制表符分隔文本转换为其他列表中的 csv 路径

转载 作者:行者123 更新时间:2023-12-01 01:43:42 25 4
gpt4 key购买 nike

我目前正在寻找构建一个脚本,该脚本采用 .txt 文件(制表符分隔)并将其转换为 .csv。运行以下代码时,我收到错误消息(需要类似字节的对象,而不是“str”)。完成此操作的最佳方式是什么?

  import csv
import itertools

txt_file_P_T = r"mytxt_P_T.txt"
txt_file_P_C = r"mytxt_P_C.txt"
txt_file_S_T = r"mytxt_S_T.txt"
txt_file_S_C = r"mytxt_S_C.txt"

csv_file_P_T = r"mycsv_P_T.csv"
csv_file_P_C = r"mycsv_P_C.csv"
csv_file_S_T = r"mycsv_S_T.csv"
csv_file_S_C = r"mycsv_S_C.csv"

text_list = [txt_file_P_T, txt_file_P_C, txt_file_S_T, txt_file_S_C]
csv_list = [csv_file_P_T, csv_file_P_C, csv_file_S_T, csv_file_S_C]

for i, j in zip(text_list, csv_list):
in_txt = csv.reader(open(i, "rt"),)
out_csv = csv.writer(open(j, 'wb'))
out_csv.writerows(in_txt)

最佳答案

csv 模块在 Python2 和 Python3 之间发生了很大的变化。在Python2中,csv writer的底层文件对象应该以二进制模式打开。在 Python3 中,应将其打开为文本模式(允许指定显式编码)并使用 newline = '' 参数以避免任何行尾转换。

所以你应该:

...
for i, j in zip(text_list, csv_list):
in_txt = csv.reader(open(i))
out_csv = csv.writer(open(j, 'w', newline = ''))
out_csv.writerows(in_txt)

关于python - 迭代并行列表并将一个列表中的制表符分隔文本转换为其他列表中的 csv 路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51615916/

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