2015-10-16 62 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('.')