python csv读取器转义escapechar本身不会产生错误

2024-10-01 13:41:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我想用atpythonscsv把被%转义的行读入列表。当有错误的输入时,应该抛出一个错误(或者至少应该可以检测到错误的输入)。在

因此,'%%a%,b,c'的正确输入将导致['%a,b', 'c']的列表。一个错误的输入'%a%b,c'现在会导致一个['a,b', 'c']的列表,但是应该会引发一个错误,因为第一个escapechar%没有转义自身。在

目前,我的最小工作示例代码如下,tag_names是结果列表:

from io import StringIO
import csv

tag_string_wrong = '%a%,b,c'
tag_string_correct = '%%a%,b,c'

csv_stream = StringIO(tag_string_wrong)

reader = csv.reader(csv_stream, delimiter = ',', escapechar = '%', quoting=csv.QUOTE_NONE, strict=True)

tag_names =  next(reader, []) 

我希望有人能帮助我。在


编辑: 通过这些评论,我发现我误解了pythonscsv中转义的概念。但是我发现当我用csv.writertag_string_wrong转换回csv.writer时,结果与输入不一样。(在tag_string_correct处结果相同)

下面的代码在输出处为tag_string_wrong生成字符串a%,b,c,但在我看来,它最好会引发一个错误,因为它无法转换回与原始输入相同的值。在

我是否遗漏了输出与输入不再相同的内容?在


要转换和转换回的代码:

^{pr2}$

Tags: csv代码import列表streamstringnamestag