私は以下の文字列の数値を持ち、桁と小数点のみを保持する必要があります。私はちょうどこれのための正しい正規表現を見つけることができません。Python - 文字列の数値を浮動小数点に変換する
s = [
"12.45-280", # need to convert to 12.45280
"A10.4B2", # need to convert to 10.42
]
私は以下の文字列の数値を持ち、桁と小数点のみを保持する必要があります。私はちょうどこれのための正しい正規表現を見つけることができません。Python - 文字列の数値を浮動小数点に変換する
s = [
"12.45-280", # need to convert to 12.45280
"A10.4B2", # need to convert to 10.42
]
あなたがlocale
と正規表現の組み合わせのために行くことができ
import re
num_string = []* len(s)
for i, string in enumerate(s):
num_string[i] = re.sub('[a-zA-Z]+', '', string)
「に」char空にするために、文字列内の各アルファベット文字を変換します
import re, locale
from locale import atof
# or whatever else
locale.setlocale(locale.LC_NUMERIC, 'en_GB.UTF-8')
s = [
"12.45-280", # need to convert to 12.45280
"A10.4B2", # need to convert to 10.42
]
rx = re.compile(r'[A-Z-]+')
def convert(item):
"""
Try to convert the item to a float
"""
try:
return atof(rx.sub('', item))
except:
return None
converted = [match
for item in s
for match in [convert(item)]
if match]
print(converted)
# [12.4528, 10.42]
あなたはまた、すべてを削除することができます非数字、非ドット文字を入力し、結果をfloatに変換します。
In [1]: import re
In [2]: s = [
...: "12.45-280", # need to convert to 12.45280
...: "A10.4B2", # need to convert to 10.42
...: ]
In [3]: for item in s:
...: print(float(re.sub(r"[^0-9.]", "", item)))
...:
12.4528
10.42
ここで[^0-9.]
は、数字またはリテラルドット以外の任意の文字と一致します。
最初の予想出力値はfloat -267.55か文字列 "12.45-280"ですか? –
正規表現を試してみましたが、どのような結果が出ましたか? – CAB
'[0-9 \。]。?'を試しましたか? – alvas