2016-12-28 40 views
0

我有一些數據是從維基百科複製並粘貼的,並且正在清理它。我想將所有數字字符串轉換爲浮點數。出於某種原因,數字串不被由str.isnumeric()除了第一個「100.0」公認isnumeric()不能識別我的字符串作爲數字

for n,i in enumerate(PercentageWorldEmissions): 
if str.isnumeric(i): 
    PercentageWorldEmissions[n] = float(i) 
else: 
    continue 

輸出:

['% CO2 emissions by country', 100.0, '29.55', '14.95', '9.57', '6.56', '4.95', '3.58', '2.15', '1.74', '1.73', '1.71', '1.58', '1.40', '1.38', '1.38', '1.28', '1.27', '1.16', '1.15', '1.10', '0.99', '0.94', '0.91', '0.84', '0.78', '0.76', '0.70', '0.68', '0.66', '0.64', '0.63', '0.56', '0.56', '0.55', '0.53', '0.44', '0.44', '0.40', '0.39', '0.34', '0.31', '0.28', '0.27', '0.27', '0.26', '0.25', '0.22', '0.22', '0.21'] 

其中PercentageWorldEmissions看起來等同於輸出除了元件100.0原來是'100.0'

爲什麼isnumeric不能識別其他字符串?有沒有隱藏的角色,我看不到?我嘗試了在另一個頁面上看到的repr()方法,但沒有透露任何內容。

我也試過isdigit,isalnum,isdecimal都無濟於事......任何幫助大加讚賞!

回答

0

我不採取元素100.0原是「100.0」,因爲'100.0'也不會被str.isnumeric()認可。這是因爲字符.句號)沒有Unicode 數字屬性。我寧可假設100.0本來是'100',其中isnumeric

您的問題可以解決e。 G。這樣:

for n, i in enumerate(PercentageWorldEmissions): 
    try: 
     PercentageWorldEmissions[n] = float(i) 
    except ValueError: 
     continue