2016-12-28 19 views
0

私はWikipediaからコピーし貼り付けたデータがあり、それを掃除中です。数値であるすべての文字列を浮動小数点数に変換したい。何らかの理由で数値文字列は、最初の「100.0」を除くstr.isnumeric()によって認識されていないisnumeric()は私の文字列を数値として認識しません

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

出力:PercentageWorldEmissions要素以外の出力と同じに見える

['% 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'] 

100.0は元々 '100.0'でした

他の文字列を認識できないのはなぜですか?見えない隠しキャラクターはありますか?私は別のページで見たrepr()メソッドを試しましたが、それは何も明らかにしませんでした。

私はisdigit、isalnum、isdecimalも無駄にしました...どんなヘルプでも大変感謝しています!

答えて

0

は私が'100.0'も同様にstr.isnumeric()によって認識されていないため要素100.0は、もともと「100.0」だったことになりません。これは、文字.フルストップ)にUnicode 数値プロパティがないためです。私はむしろ100.0が元々'100'だったと推定しています。それはisnumericです。

あなたの問題は解決できます。e。 g。この方法:

for n, i in enumerate(PercentageWorldEmissions): 
    try: 
     PercentageWorldEmissions[n] = float(i) 
    except ValueError: 
     continue 
関連する問題