我正在使用Python3的csv模块,我想知道为什么我无法正确控制引用。我使用的是quoting = csv.QUOTE_NONNUMERIC
选项,但我仍然看到所有引用的条目。知道为什么会这样吗?
这是我的代码。基本上,我正在读取一个csv文件,并希望删除所有具有相同文本字符串的重复行:
import sys
import csv
class Row:
def __init__(self, row):
self.text, self.a, self.b = row
self.elements = row
with open(sys.argv[2], 'w', newline='') as output:
writer = csv.writer(output, delimiter=';', quotechar='"',
quoting=csv.QUOTE_NONNUMERIC)
with open(sys.argv[1]) as input:
reader = csv.reader(input, delimiter=';')
header = next(reader)
Row.labels = header
assert Row.labels[1] == 'Label1'
writer.writerow(header)
texts = set()
for row in reader:
row_object = Row(row)
if row_object.text not in texts:
writer.writerow(row_object.elements)
texts.add(row_object.text)
当我查看生成的文件时,内容如下所示:
"Label1";"Label2";"Label3"
"AAA";"123";"456"
...
但我想要这个:
"Label1";"Label2";"Label3"
"AAA";123;456
...
答案 0 :(得分:0)
好的......我自己弄清楚了。我担心的答案相当简单 - 回想起来很明显。由于每行的内容是从csv.reader()
获得的,因此默认情况下其元素是字符串。结果,后来使用的csv.writer()
引用了get。
要被视为int
,首先需要将其转换为int
:
row_object.elements[1]= int(row_object.a)
可以通过在此演员表之前和之后插入类型检查来证明此解释:
print('Type: {}'.format(type(row_object.elements[1])))