2013-05-27 63 views
2

例如,考慮包含字母字符串和數字轉換Python列表爲花車,其中列表還包含單詞

a = ['Total', '1', '4', '5', '2'] 

它是如何將有可能將其轉換成混合值列表清單在Python

b = ['Total', 1.0, 4.0, 5.0, 2.0] 

需要注意的是,一般大家可能不知道,其中字母串會出現在列表中,即我們可能有

a = ['Total', '1', '4', 'Next', '2'] 
+0

即使'a [0] .isdigit()== True','b [0]'是否總是一個字符串? –

+0

或者,你可以斷言'a [0] .isdigit()== False'? –

+0

我個人正在尋找一種通用的方法去處理它,即[3]也可能是一個字符串(在字符串中)。 – rwolst

回答

5

您可以使用發電機功能和異常處理:

>>> def func(seq): 
     for x in seq: 
      try: 
       yield float(x) 
      except ValueError: 
       yield x 
...    
>>> a = ['Total', '1', '4', '5', '2'] 
>>> list(func(a)) 
['Total', 1.0, 4.0, 5.0, 2.0] 
+1

打敗我吧。 +1和一個小的編輯來糾正縮進。 –

+0

感謝Ashwini +1 – rwolst

4

只是轉換的一切,但第一列:

b = a[:1] + [float(i) for i in a[1:]] 

your other question來看你正在處理一個CSV文件,因此如果第一列總是一個字符串,沒有意義轉換每一行的那一部分:

>>> a = ['Total', '1', '4', '5', '2'] 
>>> a[:1] + [float(i) for i in a[1:]] 
['Total', 1.0, 4.0, 5.0, 2.0] 

你也可以使用try: - except ValueError的方法,但是爲什麼會在事先知道哪些列有文本,哪些列有數字值時引發開銷?

0

假設你的最終目標是不是一個CSV文件包,我建議pandas.read_csv。

相關問題