【发布时间】:2010-12-02 07:21:48
【问题描述】:
所以我有一个带有逗号分隔数字的文本文件,我正在尝试编写 Python 来一次获取三个数字 - 它们是 3D 坐标,我想一次分析 3 个。
文本文件的格式为
x1,y1,z1,x2,y2,...,
只有一行。
【问题讨论】:
-
我得到的更快的答案之一。谢谢大家,我还在用 Python 想办法。
所以我有一个带有逗号分隔数字的文本文件,我正在尝试编写 Python 来一次获取三个数字 - 它们是 3D 坐标,我想一次分析 3 个。
文本文件的格式为
x1,y1,z1,x2,y2,...,
只有一行。
【问题讨论】:
您不需要正则表达式。查看CSV module。
【讨论】:
csv 模块”,而不是“CSV 模块”,真的。
def coords(line):
parts = line.split(',')
for i in range(0, len(parts), 3):
yield map(int, parts[i:i+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']]
>>>
【讨论】: