我试图删除“我正在创建的csv文件中的符号,但它要么给我一个错误:”_csv.错误:需要转义,但没有escapechar set“或者它给了我quotechar='”'每个第一个字符和最后一个字符。在
我运行的是3.7 Python,我尝试用以下更改更改代码:
passphrase_writer = csv.writer(file, lineterminator='\n' ,quoting=csv.QUOTE_NONE)
#passphrase_writer = csv.writer(file, delimiter=',', lineterminator='\n',quoting=csv.QUOTE_NONE,)
#passphrase_writer = csv.writer(file, delimiter=',' ,lineterminator='\n', quoting=csv.QUOTE_NONE)
def print_dict(d,site_id):
with open('passphrases.csv', mode='w', newline='') as file:
passphrase_writer = csv.writer(file, lineterminator='\n' ,quoting=csv.QUOTE_NONE)
#passphrase_writer = csv.writer(file, delimiter=',', lineterminator='\n',quoting=csv.QUOTE_NONE,)
#passphrase_writer = csv.writer(file, delimiter=',' ,lineterminator='\n', quotechar='|')
for idx, val in enumerate(d['data']):
x = (u'{},{},{},{},{},{},{},{}'.format(val['id'],
val['Name'],
val['domain'],
val['Version'],
val['lastLoggedIn'],
val['networkInterfaces'][0]['inet'][0],
val['id2'],
passphrase(val['id'], site_id)
))
print(x)
passphrase_writer.writerow([x])
打印结果良好:
54356,tomer-a36,WORKGROUP,2.,tom,192.168.30.133,eafa2eb,DREAM
但是,csv文件将具有:
"54356,tomer-a36,WORKGROUP,2.,tom,192.168.30.133,eafa2eb,DREAM"
我想去掉多余的
注意-更改quotechar='|'
时,我得到:
|54356,tomer-a36,WORKGROUP,2.,tom,192.168.30.133,eafa2eb,DREAM|
尝试设置quotechar=''
时出错。在
这是在过度复杂化,并将自定义格式与内置的
csv
模块混合在一起您正在传递一个已格式化参数的列表,分隔符为
,
。csv
模块必须引用它以使它保持为单个“单元”,因为默认的csv
分隔符已经是,
。csv
模块有一个内置的安全机制,可以避免丢失/损坏数据:不引用数据会使一个带有逗号的单元格与几个用逗号分隔的单元格无法区分。在相反,只需将参数写成数据的}。在
tuple
,并停止使用str.format
构建{因为您的数据从不包含
,
(你确定吗?似乎passphrase
实际上可以)您不必担心插入引号。在如果有(
passphrase
可能是一个很好的候选者),csv.reader
将能够解析它们并删除它们以取消数据的序列化(Excel也会这样做)。不要尝试读取并解析使用,
手动拆分的文件,请再次使用csv
模块。在相关问题 更多 >
编程相关推荐