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

标签 python csv delimiter

我得到的数据如下所示:

"1234"||"abcd"||"a1s1"

我正在尝试使用 Python 的 csv 读写器进行读写。 由于 csv 模块的分隔符仅限于单个字符,有没有办法干净地检索数据?我负担不起删除空列的费用,因为它是一个需要按时间限制的方式处理的海量数据集。任何想法都会有所帮助。

最佳答案

The docs并且实验证明只允许使用单字符定界符。

由于 cvs.reader 接受任何支持迭代器协议(protocol)的对象,您可以使用生成器语法将 ||-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='|')

此代码非常有效,因为它一次在一个 CSV 行上运行,前提是您的 CSV 源生成的行不超过您的可用 RAM :)

关于python - 如何使用 python csv 模块拆分双管道分隔数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6352409/

相关文章:

python - 从用作进度监视器的 QDialog 中启动 QProcess

python - '无法计算 Pack,因为输入 #1(从零开始)预计是浮点张量,但实际上是 int32 张量 [Op :Pack] name: packed'. tf.squeeze 错误

csv - 如何在 flutter 中从设备存储中读取 CSV 文件

Java 字符串引号定界符

java - 如何更改文本文件的分隔符?

python - 在 Python 中解析 JSON 对象时遇到问题

python - scipy curve_fit 在拟合傅里叶函数时不产生平滑的图形

java - 如何用空格分隔用户输入

c# - 正则表达式以逗号分割,除非被引用

php - 使用 "load data infile"时如何忽略 CSV 文件的最后五行