2017-12-27 13 views
-3

から通貨番号を取得する(整数または1または2DPに浮く)の形式の文字列から:Pythonの正規表現:I正規表現に新しいですし、通貨のような数字を抽出するためにre.findallを使用しようとしています文字列

'1000 - 2000' , '1000 -', '1000.4' 

私は文字列からすべての数字を別のリストに抽出する正規表現のパターンを見つけるのに苦労しましたが、この問題について助けてくれれば幸いです。

例えば、私が手

import re 

pattern = '^\d*[.,]?\d*$' 
temp = ['1000.5 - 2000.55'] 
strings = re.findall('^\d*[.,]?\d*$', temp[0]) 

出力は、[]

空のリストである私は

strings = ['1000.5','2000.55'] 

を取得したいと思いますし、その後、山車に変換したいと思います

nums = [float(i) for i in strings] 
+2

あなたがサンプル入力と期待される出力を提供することができますか?あなたの質問は*広すぎるとみなされます。 – ctwheels

+0

浮動小数点数も1小数点にしますか? – Marathon55

+0

また、 'with 2dp'と言うときは、' 1.123'のような数字を '1.12'にしたい、あるいは出力に表示されないように完全に無視したいのですか?また、 '1.126'を持っている場合は、最後の数字を' 1.12'となるように切り捨てたいと仮定します: '1.12'または '1.13'の丸め値をしますか? – ctwheels

答えて

0
import re 

temp = ['1000.5 - 2000.55'] 
strings = re.findall('\d+(?:[.,]\d*)?', temp[0]) 
nums = [float(i) for i in strings] 
print(nums) # [1000.5, 2000.55] 

demo

0

あなただけ[0-9.]+使用することができます。

import re 
pattern=r'[0-9.]+' 
temp = ['1000.5 - 2000.55'] 
for i in temp: 
    print(list(map(lambda x:float(x),re.findall(pattern,i)))) 

出力:

[1000.5, 2000.55] 
ます。また、1行で行うことができます

print([list(map(lambda x:float(x),re.findall(pattern,i))) for i in temp][0]) 

出力:

[1000.5, 2000.55] 
0

あなたはこれを試すことができます。

import re 
temp = ['1000.5 - 2000.55'] 
final_data = map(float, re.findall('\d+\.\d+|\d+', temp[0])) 

出力:

[1000.5, 2000.55] 
関連する問題