如何使用python csv模块拆分双管分隔数据

Dev*_*esh 7 python csv delimiter

我有数据看起来像:

"1234"||"abcd"||"a1s1"
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用Python的csv阅读器和编写器进行读写.由于csv模块的分隔符仅限于单个字符,是否有任何方法可以干净地检索数据?我无法删除空列,因为它是一个庞大的数据集,需要以时间限制的方式处理.任何想法都会有所帮助.

Pav*_*pin 13

文档和实验证明只允许使用单字符分隔符.

由于cvs.reader接受任何支持迭代器协议的对象,您可以使用生成器语法将||-s 替换为|-s,然后将此生成器提供给阅读器:

def read_this_funky_csv(source):
  # be sure to pass a source object that supports
  # iteration (e.g. a file object, or a list of csv text lines)
  return csv.reader((line.replace('||', '|') for line in source), delimiter='|')
Run Code Online (Sandbox Code Playgroud)

此代码非常有效,因为它一次只能在一行CSV行上运行,只要您的CSV源产生的行不超过可用RAM :)

  • 据推测,使用双管分隔符的原因是因为在给定值中可能存在单个管道. (7认同)