在Python中仅从逗号分隔字符串中提取某些字段的最快方法

Jer*_*rks 5 python csv performance split

假设我有一个字符串,其中包含来自数据库或电子表格的数据,采用逗号分隔格式.

例如:

data = "hello,how,are,you,232.3354,good morning"
Run Code Online (Sandbox Code Playgroud)

假设这些"记录"中可能有200个字段.

我有兴趣查看此记录的某些字段.Python中最快的方法是什么?

最简单的方法是:

fields = data.split(",")
result = [fields[4], fields[12], fields[123]]
Run Code Online (Sandbox Code Playgroud)

有没有更快的方法来做到这一点,利用以下事实:

  1. 您只需要为结果分配一个包含3个元素和3个字符串对象的列表.
  2. 到达字段123后,您可以停止扫描数据字符串.

我曾尝试使用重复调用来编写一些代码来查找跳过传递的逗号,但如果最后一个字段在字符串中太远,则会比基本的拆分解决方案慢.

我正在处理数百万条记录,所以任何加速都会受到欢迎.

mgi*_*son 0

如果result可以是 atuple而不是列表,您可能会使用以下方法获得一些加速(如果您正在进行多次调用)operator.itemgetter

from operator import itemgetter
indexer = itemgetter(4,12,123)
result = indexer(data.split(','))
Run Code Online (Sandbox Code Playgroud)

不过,您需要timeit实际查看是否获得加速。