如何从python中的字符串列表中获取数字

时间:2014-07-26 20:06:12

标签: python string list numbers

我在python中有一个字符串列表,我从一个文件中读取:

    lines = ['4 11', '8 4', '10 5', '15 8', '4 3']

如果我想为某些变量分配4和11。我做了一些事情:

    a, b = lines[0][0], lines[0][2:]

现在我需要为某些变量分配10和5,如果我做的话:

    c, d = lines[2][0], lines[2][2:]

它给出了:

   1
    5

所以我必须这样做:

    f, g = lines[0][0:2], lines[0][3]

获取列表中特定元素的必需结果。

我必须为任何输入文件自动执行此过程。我究竟做错了什么?有什么帮助吗?

3 个答案:

答案 0 :(得分:2)

您应该使用split()

,而不是假设数字是哪个字符
for num_pair in lines:
  a, b = lines.split()  # Splits based on whitespace
  # Do something with a and b

split()将一个字符串分隔成一个较小的字符串列表,根据空格分割(或者,如果你传入一个字符作为参数,则拆分该字符)。

答案 1 :(得分:2)

In [13]: lines = ['4 11', '8 4', '10 5', '15 8', '4 3']

In [14]: [[int(i) for i in line.split()] for line in lines]
Out[14]: [[4, 11], [8, 4], [10, 5], [15, 8], [4, 3]]

现在,您可以迭代新列表并指定您想要的任何变量

修改

如果您只想阅读每对数字,可以将列表推导转换为生成器(只需将外部[]更改为())。这样,并非所有结果都存储在列表中,您可以一次访问一个:

([int(i) for i in line.split()] for line in lines)

答案 2 :(得分:0)

您可以使用地图:

lines = ['4 11', '8 4', '10 5', '15 8', '4 3']
a,b = map(int,lines[0].split())
print a,b
4 11
a, b, c, d  = map(int,lines[0].split() + lines[2].split())
print a,b,c,d
4 11 10 5