私はコンマで区切られた数字のテキストファイルを持っています。私は一度に3つの数値を取得するためにPythonを書こうとしています - 3D座標です。一度に。Regex Help、por favor
テキストファイルの形式は
X1、Y1、Z1、X2、Y2、...、
のものであり、ちょうど1行です。
乾杯。
私はコンマで区切られた数字のテキストファイルを持っています。私は一度に3つの数値を取得するためにPythonを書こうとしています - 3D座標です。一度に。Regex Help、por favor
テキストファイルの形式は
X1、Y1、Z1、X2、Y2、...、
のものであり、ちょうど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']]
>>>
csvモジュールなしの場合); – user225312
これには正規表現は必要ありません。 CSV moduleをチェックしてください。
"CSVモジュール"ではなく、 "csvモジュール"と呼ぶべきです。 –
小文字でモジュール名について話しているのなら、モジュールの名前よりも多くの形式でCSVを意味していました。 – user225312
def coords(line):
parts = line.split(',')
for i in range(0, len(parts), 3):
yield map(int, parts[i:i+3])
本当に、正規表現に頼る必要はありません。
+1とジェネレータの場合はintに変換されます(浮動小数点の場合もありますが) – PaulMcG
私が得たより速い回答の1つです。ありがとう、まだPythonで私の方法を考え出しています。 – sparkFinder