gpt4 book ai didi

python - 将与打印命令相同的内容保存到 .csv 文件

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

打印命令向我显示类似这样的内容(我有 3 行,但这只是示例的一部分):

O;4;Line[63];CPUA.DB1610.4122,X1;RW
V;5;Enable_maintenance_mode;;
V;5;Maintenance_start_motor;CPUA.DB1610.4124,X0;RW
O;4;Line[64];CPUA.DB1610.4124,X1;RW

我正在尝试将相同的内容保存在 csv 文件上,但在 csv 上我只有一行和这种格式。问题是,如何将打印显示的内容保存到csv文件?

O,;,4,;,L,i,n,e,[,6,4,],;,C,P,U,A,.,D,B,1,6,1,0,.,4,1,2,4,|,|,X,1,;,R,W

他们只在 csv 文件中保存了我的一行

这是我的代码:

for i in range((len(result)-1)):
print(str(result[i][0]) + ';' + str(result[i][1]) + ';' + result[i][2] + ';' + str(adress[i]))
with open(source_file[:-4] + '_test.csv', "w") as f:
writer = csv.writer(f)
writer.writerow(str(result[i][0]) + ';' + str(result[i][1]) + ';' + result[i][2] + ';' + str(adress[i]))

我不知道我做错了什么。有人可以帮我解决这个问题吗?

结果包含:

['V', '5', 'Enable_maintenance_mode', "S7:[CPUA]DB1610', 'X4124.0", 'B', 'RW', '0', "0']"]
['V', '5', 'Maintenance_start_motor', "S7:[CPUA]DB1610', 'X4124.1", 'B', 'RW', '0', "0']"]
['O', '4', 'Line[64]', '', '', "']"]
['V', '5', 'Enable_maintenance_mode', "S7:[CPUA]DB1610', 'X4126.0", 'B', 'RW', '0', "0']"]
<小时/>

@Martin Evans 你的例子看起来非常好。但我只需要结果中的部分行并将其另存为 csv。我可以做出这样的想法吗?

csv_output = csv.writer(f_output, lineterminator='\n')
for line in result:
#csv_output.writerow(line)
csv_output.writerow(str(result[line][0]) + ';' + str(result[line][1]) + ';' + result[line][2] + ';' + str(adress[line]))

但我有错误:TypeError:列表索引必须是整数,而不是列表

最佳答案

csv 库旨在获取列条目列表,并通过添加必要的分隔符将其自动转换为整个 csv 行。您的 print 语句通过在每个列条目之间附加 ; 来模拟这一点。您可以指定创建 csv.writer 时使用的分隔符,在您的示例中为 ;:

import csv

result = [
['V', '5', 'Enable_maintenance_mode', "S7:[CPUA]DB1610', 'X4124.0", 'B', 'RW', '0', "0']"],
['V', '5', 'Maintenance_start_motor', "S7:[CPUA]DB1610', 'X4124.1", 'B', 'RW', '0', "0']"],
['O', '4', 'Line[64]', '', '', "']"],
['V', '5', 'Enable_maintenance_mode', "S7:[CPUA]DB1610', 'X4126.0", 'B', 'RW', '0', "0']"]]

address = [
"CPUA.DB1610.4122,X1;RW",
"",
"CPUA.DB1610.4124,X0;RW",
"CPUA.DB1610.4124,X1;RW"]

with open('output.csv', 'w', newline='') as f_output:
csv_output = csv.writer(f_output, delimiter=';')

for r, a in zip(result, address):
csv_output.writerow(r[0:3] + a.split(';'))

在 Python 3.x 中使用 csv.writer() 时,应始终使用 w 打开文件并设置 newline=''.此外,直接迭代 result 条目也更容易,无需使用 range() 和索引。由于您似乎有两个长度相等的列表,因此您可以使用 zip 在迭代时为每个列表提供一个元素。

这将为您提供如下输出文件:

V;5;Enable_maintenance_mode;CPUA.DB1610.4122,X1;RW
V;5;Maintenance_start_motor;
O;4;Line[64];CPUA.DB1610.4124,X0;RW
V;5;Enable_maintenance_mode;CPUA.DB1610.4124,X1;RW

请注意,您尚未提供地址示例,因此这是基于您的示例输出。

关于python - 将与打印命令相同的内容保存到 .csv 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36834400/

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