2016-08-09 9 views
3

私はこのようになります文字列を持っている:だからでPython的な方法

coords = "86.2646484375,23.039297747769726 87.34130859375,22.59372606392931 88.13232421875,24.066528197726857" 

coords = "86.2646484375,23.039297747769726,87.34130859375,22.59372606392931,88.13232421875,24.066528197726857" 

私が欲しいのは、この形式にそれをもたらすことですコンマをスペースで置き換える秒数。これを行うシンプルな、pythonicな方法がありますか?

今私は分割関数を使ってリストを作成し、リストをループすることでそれをしようとしています。しかしそれはむしろ単純ではないようです。

+1

'リスト(ジップ(c.split( " ")、c.split("、") [1:]))[:: 2] '、おそらく?ちょっと醜いですね。 – senshin

答えて

12

まずは正規表現モジュールをインポートし、coords変数を定義してみましょう:

>>> import re 
>>> coords = "86.2646484375,23.039297747769726,87.34130859375,22.59372606392931,88.13232421875,24.066528197726857" 

それでは、スペースで毎秒コンマを交換しましょう

>>> re.sub('(,[^,]*),', r'\1 ', coords) 
'86.2646484375,23.039297747769726 87.34130859375,22.59372606392931 88.13232421875,24.066528197726857' 

正規表現(,[^,]*), looコンマのペアについてはks。置換テキスト、r'\1 'は最初のカンマを保持しますが、2番目のカンマをスペースで置き換えます。

+0

ありがとうございました。カッコいい。 – user1919

2

作品のこの種:

>>> s = coords.split(',') 
>>> s 
['86.2646484375', '23.039297747769726', '87.34130859375', '22.59372606392931', '88.13232421875', '24.066528197726857'] 
>>> [','.join(i) for i in zip(s[::2], s[1::2])] 
['86.2646484375,23.039297747769726', '87.34130859375,22.59372606392931', '88.13232421875,24.066528197726857'] 
+0

または '[i + '、' + j for i、j in zip(out、out [1:])] ' –

1

神託の方法は、文字列を分割し、交互の区切り文字で、それを再び参加することである。

from itertools import chain, cycle, izip 
coords = ''.join(chain.from_iterable(izip(coords.split(','), cycle(', ')))) 
関連する問題