我正在使用 shlex 解析 csv 文件,并且需要保留连续的空白字符,如下所示...
line = 'a, b, "c, z",,,d,e,f'
spltr = shlex.shlex(line)
spltr.whitespace += ','
parts = list(spltr)
print parts
当我真正想要 [' 时,它会返回
。我如何告诉 shlex 保留这些连续的空白字符而不是删除它们?['a', 'b', '"c, z"', 'd', 'e', 'f']
a'、'b'、'"c、z"'、''、''、'd'、'e'、'f']
最佳答案
这不适用于 shlex
,在命令行上,空白字符的数量不相关。
spltr.whitespace += ','
一个或多个空白之间没有区别,它们被作为单个项目进行处理。
这是一个可行的解决方案:
- 请将您的输入文件分割成行 block
- 如果您愿意,可以将您的 block 发送到另一个进程
- 使用
StringIO
,这样你就可以在每个 block 上拥有文件语义 - 使用
csv
模块
工作示例:
>>> import csv
>>> import StringIO
>>>
>>> line = 'a, b, "c, z",,,d,e,f'
>>> file_like = StringIO.StringIO(line)
>>>
>>> csvreader = csv.reader(file_like, delimiter=',', quotechar='"', skipinitialspace=True)
>>> list(csvreader)
[['a', 'b', 'c, z', '', '', 'd', 'e', 'f']]
关于python - 使用 shlex 保留连续的空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17626318/