python - 使用 shlex 保留连续的空格

标签 python

我正在使用 shlex 解析 csv 文件,并且需要保留连续的空白字符,如下所示...

line = 'a, b, "c, z",,,d,e,f'
spltr = shlex.shlex(line)
spltr.whitespace += ','
parts = list(spltr)
print parts

当我真正想要 [' 时,它会返回 ['a', 'b', '"c, z"', 'd', 'e', 'f'] a'、'b'、'"c、z"'、''、''、'd'、'e'、'f']。我如何告诉 shlex 保留这些连续的空白字符而不是删除它们?

最佳答案

这不适用于 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/

相关文章:

python - 编辑单元格时pyqt5 qtablewidget单元格背景

python - 导入错误 : cannot import name 'animation' (matplotlib + python 3. 8.5)

python - 使用Python中的线性回归估算缺失值

python - 我可以使 Django 数据库路径(对于 sqlite3)为 "cross-platform"吗?

python - 在没有 shell 的情况下使用 subprocess.call 时如何将字符串通过管道传输到脚本

python - 使用正则表达式将字符串拆分为多个空格。

python - 如何在json中将汉字编码为 'gbk',格式化一个url请求参数String?

python - 寻找一个 wxpython 小部件,它可以让用户像在表格中一样填写数据

python - 尝试使用未初始化的值时出错

python - 如何向列表的每个值添加一个字符串,然后将该字符串的值加起来?