【问题标题】:Get comma-separated values three at a time一次获取三个逗号分隔值
【发布时间】:2010-12-02 07:21:48
【问题描述】:

所以我有一个带有逗号分隔数字的文本文件,我正在尝试编写 Python 来一次获取三个数字 - 它们是 3D 坐标,我想一次分析 3 个。

文本文件的格式为

x1,y1,z1,x2,y2,...,

只有一行。

【问题讨论】:

  • 我得到的更快的答案之一。谢谢大家,我还在用 Python 想办法。

标签: python csv


【解决方案1】:

您不需要正则表达式。查看CSV module

【讨论】:

  • 你应该称它为“csv 模块”,而不是“CSV 模块”,真的。
  • 如果您说的是小写的模块名称,我的意思是 CSV 的格式比模块名称多。
【解决方案2】:
def coords(line):
    parts = line.split(',')
    for i in range(0, len(parts), 3):
        yield map(int, parts[i:i+3])

真的不需要使用正则表达式。

【讨论】:

  • +1 用于生成器,并转换为整数(尽管它们可能是浮点数)
【解决方案3】:

是的,任何逗号分隔的数据都表明需要 CSV,但您也可以在此处使用简单的拆分。

用逗号分隔的 (x, y, z) 坐标字符串

>>> t = "x1,y1,z1,x2,y2,z2,x3,y3,z3"

使用拆分:

>>> t1 = t.split(',')
>>> t1
['x1', 'y1', 'z1', 'x2', 'y2', 'z2', 'x3', 'y3', 'z3']

然后将结果整理/分组为 3 个元素。您需要确保 len(t1) 是 3s 的倍数。为此使用断言。

>>> t2 = []
>>> for x in range(len(t1)/3): t2.append(t1[x*3 : x*3+3])
... 
>>> t2
[['x1', 'y1', 'z1'], ['x2', 'y2', 'z2'], ['x3', 'y3', 'z3']]
>>> 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-19
    • 1970-01-01
    • 2018-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-11
    相关资源
    最近更新 更多