字符串到Python中的列表

时间:2012-05-04 13:09:28

标签: python string list

我有一个包含数字列表的str,我想将其转换为列表。现在我只能在列表的第0个条目中获取整个列表,但我希望每个数字都是列表的元素。有没有人知道在Python中使用这种方法的简单方法?

for i in in_data.splitlines():
    print i.split('Counter32: ')[1].strip().split()

我的结果不是我想要的

['12576810']\n['1917472404']\n['3104185795']

我的数据

IF-MIB::ifInOctets.1 = Counter32: 12576810
IF-MIB::ifInOctets.2 = Counter32: 1917472404
IF-MIB::ifInOctets.3 = Counter32: 3104185795

我想要结果

['12576810','1917472404','3104185795']

6 个答案:

答案 0 :(得分:8)

将您的数据视为

>>> data="""IF-MIB::ifInOctets.1 = Counter32: 12576810
IF-MIB::ifInOctets.2 = Counter32: 1917472404
IF-MIB::ifInOctets.3 = Counter32: 3104185795"""

您可以在意图更清晰的地方使用正则表达式

>>> import re
>>> [re.findall("\d+$",e)[0] for e in data.splitlines()]
['12576810', '1917472404', '3104185795']

或指出@jamylak

re.findall("\d+$",data,re.MULTILINE)

str.rsplit哪个会有性能优势

>>> [e.rsplit()[-1] for e in data.splitlines()]
['12576810', '1917472404', '3104185795']

答案 1 :(得分:5)

你已经很远了。根据您的代码,试试这个:

result = []
for i in in_data.splitlines():
    result.append(i.split('Counter32: ')[1].strip())
print result

您也可以这样做:

result = [i.split('Counter32: ')[1].strip() for i in in_data.splitlines()]

然后,您还可以查看@Abhijit和@KurzedMetal正在使用正则表达式做什么。一般来说,这将是一种方法,但我真的很喜欢你通过一个简单的分裂来避免它们。

答案 2 :(得分:3)

我就是这样做的。

data="""IF-MIB::ifInOctets.1 = Counter32: 12576810 ... IF-MIB::ifInOctets.2 = Counter32: 1917472404 ... IF-MIB::ifInOctets.3
= Counter32: 3104185795"""

[ x.split()[-1] for x in data.split("\n") ]

答案 3 :(得分:2)

我最好试试你提供的信息:

>>> data = r"['12576810']\n['1917472404']\n['3104185795']"
>>> import re
>>> re.findall("\d+", data)
['12576810', '1917472404', '3104185795']

如果需要map()

,您甚至可以将其转换为int或long
>>> map(int, re.findall("\d+", data))
[12576810, 1917472404, 3104185795L]
>>> map(long, re.findall("\d+", data))
[12576810L, 1917472404L, 3104185795L]

答案 4 :(得分:1)

with open('in.txt') as f:
 numbers=[y.split()[-1] for y in f]
print(numbers)      

  ['12576810', '1917472404', '3104185795']

with open('in.txt') as f:
    numbers=[]
    for x in f:
        x=x.split()
        numbers.append(x[-1])
print(numbers)  

['12576810', '1917472404', '3104185795']

答案 5 :(得分:0)

result = [(item[(item.rfind(' ')):]).strip() for item in list_of_data]

使用列表理解的变体。对所有数据行进行迭代,找到空白的最后一个索引,从最后找到的空白位置到最后删除条带,去掉结果字符串(擦除可能的空格)并将结果放入新列表中。

    data = """F-MIB::ifInOctets.1 = Counter32: 12576810
IF-MIB::ifInOctets.2 = Counter32: 1917472404
IF-MIB::ifInOctets.3 = Counter32: 3104185795"""
    result = [ (item[(item.rfind(' ')):]).strip() for item in data.splitlines()]
    print result

结果:

['12576810', '1917472404', '3104185795']