2015-10-16 61 views
2

我有字符串'1234.12'。我想將字符串拆分成兩個列表[1234] [12]如何將一個浮點數的字符串分成兩部分?

我知道的唯一方法是使用.split()將整個字符串變爲列表。 或者使用一個修真[ n.split() for n in '1234.12' ]這使我

[['1'], ['2'], ['3'], ['4'], ['.'], ['1'], ['2']] 

回答

4
s = '1234.12' 

a,b = ([int(x)] for x in s.split(".",1)) 

print(a,b) 

或者只是做了兩個部分,地圖爲int,只是包裹在列表後:

s = '1234.12' 

a, b = map(int,s.split(".", 1)) 

a,b = [a],[b] 

這都將讓你的兩個數字轉換爲int幷包裹在列表中:

a -> [1234] 
b -> [12] 
+0

感謝。讓我問你在split函數裏面有什麼用法? – wa7d

+0

@ wa7d,我們只有一個'.',所以當我們找到第一個時,沒有超出的意思,它只是意味着一旦找到並且不再尋找就基本上分裂了。 –

+0

爲什麼python忽略前導零?我嘗試了一個帶有前導零的數字,它在0之後打印所有內容 – wa7d

3

您可以將串點和n使用map函數將結果轉換到列表:

>>> map(list,s.split('.')) 
[['1', '2', '3', '4'], ['1', '2']] 

和你想要的結果作爲int您可以使用int函數內map:在這個

>>> map(int,s.split('.')) 
[1234, 12] 

注意您可以通過簡單的索引訪問數字,而無需將每個數字都放在列表中。

+0

OP希望'[1234] [12]'不是'[['1', '2','3','4'],['1','2']]' –

+0

@PadraicCunningham是的,但由於問題有點含糊,我提出了2種方法。 – Kasramvd

+0

大聲笑沒有是正確的方式,問題是非常明確的,他們想要我在我的答案;) –

0

要解釋爲什麼你想不工作是什麼,

n.split() for n in '1234.12' 

實際上等同於

for n in '1234.12': 
    n.split() 

當你遍歷一個這樣的字符串,你最終得到的單個字符,所以我們也可以說相當於:

for n in ('1', '2', '3', '4', '.', '1', '2'): 
    n.split() 

所以自從split一次只給出一個字符,它不起作用。您想要將拆分移動到字符串本身:

n for n in '1234.12'.split() 

此時,您不再需要理解。

'1234.12'.split() 

最後一塊是其他地方所解釋... split,默認情況下,按空白進行分割,所以要告訴它各執一段代替:

'1234.12'.split('.')