gpt4 book ai didi

python - 为什么一个简单的 CSV 清理 python 脚本可以工作,而另一个却不能?

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

我有以下 CSV,其中包含良好数据中的垃圾字符:

setA, setB, setC, setD, setE 
,1,text:u'GOOD DATA',BAD DATA:good.number,11.1
,3,text:u'GOOD DATA',BAD DATA:good.number,11.2
,5,text:u'GOOD DATA',BAD DATA:good.number,13.1
,6,text:u'GOOD DATA',BAD DATA:good.number,11.5

清理后应该是这样的:

setA, setB, setC, setD, setE 
,1,GOOD DATA,BAD DATA:good.number,11.1
,3,GOOD DATA,BAD DATA:good.number,11.2
,5,GOOD DATA,BAD DATA:good.number,13.1
,6,GOOD DATA,BAD DATA:good.number,11.5

我有一个脚本,可以使用它成功打开 csv 文件,清理数据:

from __future__ import print_function
from sys import stdin

print(next(stdin) , end='')

for line in stdin:

toks =[tok.replace("\'","").replace("text:u","").replace("number:",
"") for tok in line.split()]

print(' '.join(toks))

但我想用不同的方式来做,就像这样,使用 csv 函数和 DictReader:

rom __future__ import print_function
from sys import stdin
import csv

with open('./BROKENDATA.csv') as data:
reader = csv.DictReader(data)
for line in reader:
toks = [tok.replace("\'",""
).replace("text:u","").replace("number:", "") for tok in line.split()]
print(' '.join(toks))

第二个脚本抛出错误:“AttributeError:'dict'对象没有属性'split'”

我认为这是因为 dict 没有与我之前所做的功能相同的功能。那么 A) 为什么不呢,B) 如何从第二个脚本中获得相同的功能?

最佳答案

由于 reader 中的 line 是字典类型,因此您可以使用列键 setA、setB、setC、setD、setE 访问每列中的值 code> 并从那里编辑它们。

from __future__ import print_function
from sys import stdin
import csv

new_rows = []
with open('./BROKENDATA.csv') as data:
reader = csv.DictReader(data)
new_rows.append(','.join(reader.fieldnames))
for line in reader:
toks = [line['setA'], line[' setB'], line[' setC'].replace("text:u","").replace("\'", ""), line[' setD'], line[' setE ']]
new_rows.append(','.join(toks))

with open('./BROKENDATA.csv', 'w') as f:
for row in new_rows:
f.write(row + '\n')

这是 line 字典的样子:

{' setD': 'GOOD DATA:2.2', ' setE ': '11.1 ', 'setA': '', ' setC': "text:u'GOOD DATA'", ' setB': '1'}

关于python - 为什么一个简单的 CSV 清理 python 脚本可以工作,而另一个却不能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54914131/

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