2010-12-02 6 views
1

私はコンマで区切られた数字のテキストファイルを持っています。私は一度に3つの数値を取得するためにPythonを書こうとしています - 3D座標です。一度に。Regex Help、por favor

テキストファイルの形式は

X1、Y1、Z1、X2、Y2、...、

のものであり、ちょうど1行です。

乾杯。

+0

私が得たより速い回答の1つです。ありがとう、まだPythonで私の方法を考え出しています。 – sparkFinder

答えて

1

ええと、コンマ区切りのデータはCSVの必要性を示していますが、ここでも簡単に分割することができます。次に、3つの要素に/グループに結果を照合

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

のあなたのカンマで区切られた文字列(X、Y、Z)

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

使用分割を調整します。 len(t1)が3の倍数であることを確認する必要があります。そのためにassertを使用してください。

>>> 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']] 
>>> 
+0

csvモジュールなしの場合); – user225312

2

これには正規表現は必要ありません。 CSV moduleをチェックしてください。

+0

"CSVモジュール"ではなく、 "csvモジュール"と呼ぶべきです。 –

+1

小文字でモジュール名について話しているのなら、モジュールの名前よりも多くの形式でCSVを意味していました。 – user225312

2
def coords(line): 
    parts = line.split(',') 
    for i in range(0, len(parts), 3): 
     yield map(int, parts[i:i+3]) 

本当に、正規表現に頼る必要はありません。

+0

+1とジェネレータの場合はintに変換されます(浮動小数点の場合もありますが) – PaulMcG