簡體   English   中英

Python:從String中提取數字

[英]Python: extract number from String

我是Python的新手,我試圖獲得一個“價格標簽字符串”以轉換成浮點數,因此我可以輕松地將結果與其他價格進行比較。 我搜索了2個小時來尋找這個“簡單問題”的答案,但是沒有一個符合我的需求。

基本上,我的價格是這樣的:

1.222.333,44 EUR

(逗號和句號交換,因為我住在德國,這也很煩人)

我希望得到這個以便於比較:

1222333.44

主要想法是比較價格,這是我的學校項目。
我曾經用PHP做過一切,但是效果太慢了。

如果您有更優雅或簡單的方式,請告訴我。

這項工作針對您提供的具體案例:

float(s.replace('.', '').replace(',', '.').split(' ')[0])

這個需要:

  1. 價格期間只是分隔符;
  2. 價格只有一個逗號,只是一個小數點;
  3. 價格是第一個,並通過空格與其他字符串分開。

僅舉一例,如果人們需要更通用的解決方案,當您需要一種簡單的方法在編碼期間或維護代碼時在數字系統之間切換時, hiro主角使用locale 的答案非常有用。

您可以使用您的(或任何) 語言環境字符串轉換為float

import locale
locale.setlocale(locale.LC_ALL, 'de_DE.UTF-8')
print(locale.atof('1.222.333,44'))  # -> 1222333.44

根據您的默認語言環境,您甚至可能不必指定語言環境。

在您的情況下,您可能需要將貨幣(EUR)部分split

price = '1.222.333,44 EUR'
price_float = locale.atof(price.split()[0])
print(price_float) # -> 1222333.44

注意:將LC_ALL設置為您需要的LC_NUMERIC可能就足夠了。

如果你的字符串是“1.222.333,44 EUR”

prince = "1.222.333,44 EUR"
price = price[:-4]
price = price.replace(".","").replace(",",".")
floatprice = float(price)

如果它就像這樣“1.222.333,44”

floatprice = float("1.222.333,44".replace(".","").replace(",","."))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM