これらの文字列を "クリーン"にする必要があります: - (S)19º52 '11,528 "、19°52' 11,528"度記号などをPythonに置き換えてください
数字が必要なだけですが、どうすればPythonでそれを行うことができますか?
乾杯、
これらの文字列を "クリーン"にする必要があります: - (S)19º52 '11,528 "、19°52' 11,528"度記号などをPythonに置き換えてください
数字が必要なだけですが、どうすればPythonでそれを行うことができますか?
乾杯、
まず、あなたは(単純または二重)引用符のいずれかを脱出しなければならないことに注意してください。それはあなたの使用のために大丈夫だということ
>>> import re
>>> z = '- (S) 19º 52\' 11,528", 19° 52\' 11,528"'
>>> [int(x) for x in re.split("\D+",z) if x]
[19, 52, 11, 528, 19, 52, 11, 528]
注:
その後re.split
が最後に生成し、整数に変換することができ、空の文字列を削除するには非番号にre.split()
を使用して、リスト内包でそれを包みます負の数値に対しては正しく機能しません(-
符号は削除されます)
浮動小数点数を適切に処理するには、それはもう少し複雑ですが、負の数を持たない限りでも実行できます:
>>> [float(x.replace(",",".")) for x in re.split("[^\d,]+",z) if x and x!=","]
[19.0, 52.0, 11.528, 19.0, 52.0, 11.528]
このようなlong/latフォーマットは固定IIRCなので、常に同じ数のフィールドを取得できます。 。分割から常に「」、「」を除外することができます。しかし、それは私たちを "文字列からのintまたはfloat"の基礎にします。しかし、完全性のために編集されています。 –
ありがとう! – Wesley
期待される結果を示します。 – RomanPerekhrest