2016-09-01 97 views
-1

我有一個整數元組。實際上,除了英文以外的所有語言都表示爲1,2,而英文使用1.2的十進制數。這種「元組」被從文件中讀取,並加入帶有一系列整數沿着陣列,所以數據類型由Python的自動分配,我有沒有對其影響...將整數元組轉換爲浮點數

whatever[7] = 1,2 

有一些巧妙的方式將其轉換爲1.2?我找到了,但他們只對字符串的工作,但是當我將它轉換爲字符串,它是parenthesised並用空格分開,

str(whatever[7]) 
'(1, 2)' 

...這樣的任務被擴大到擺脫也「(」 「)」和空間,這當然是可行的:

str(str(str(str(whatever[7]).replace(",",".")).replace(" ","")).replace("(", "")).replace(")","") 

...但它並不完全打我與它的美麗和優雅。

+1

您是否像導入Python代碼一樣導入數據文件?如果是這樣,爲什麼? –

+0

我正在讀取一個csv文件,然後通過「/ n」和隨後的「;」解析它,這留下了數組(或列表),其中唯一的最後一個元素可以是元組。我的意思是我沒有在開頭定義變量,例如* whatever = str(1,2)*,我可以選擇數據類型。 Python這樣做和Python決定,這是一個整數的元組。 – Eleshar

+0

但最後一個元素不會是元組;它將是一個字符串。你對這個字符串做了什麼來結束一個元組?使用'eval'?這就是你想改變的代碼。 –

回答

1

你的意思是像

print "%s.%s"%whatever[7] 

如果你想將它轉換爲浮動首先創建的字符串表示'1.2',然後餵養到

float("%s.%s"%whatever[7]) 
+0

哈,聰明!我永遠不會想到它將其格式化。 – Eleshar

1

您可以將元組轉換爲浮動float

要做到這一點,你可以使用mapint s到str S,加入他們的'.'和飼料,爲float()

例如:

>>> t = 1, 2 
>>> f = float(".".join(map(str,t))) 
>>> print(f) 
1.2 
-1

這個怎麼樣?

>>> whatever = 1,2 
>>> float('.'.join(str(num) for num in whatever)) 
1.2 

像吉姆的答案,它創建的'1.2'一個str表示,但使用的地圖,它會創建一個生成器對象(基本上是什麼list解析後面),這在whatever字符串每個項目轉換,即join方法可以迭代。最後,該字符串被轉換爲浮點型對象

0

以下格式將適用於您的示例。

whatever[7] = 1, 2 
new_num = float("{}.{}".format(whatever[7][0], whatever[7][1]))