从字符串python中获取一些数据

时间:2014-03-27 10:36:27

标签: python string list

我有一个字符串:

u'c-100001,e-100001,e-100011,e-100009'

我希望得到像

这样的价值
[100001,100011,100009]

我试过了:

l = note_to.split('-')
k = length(l)
j=[]
for i in (0,k):
   if k!==0 & k%2!= 0:
      j.append(l[i])

我的意思是我使用了循环。

3 个答案:

答案 0 :(得分:1)

将列表理解与str.startswithstr.split

一起使用
>>> s = u'c-100001,e-100001,e-100011,e-100009'
>>> [int(x.split('-')[1]) for x in s.split(',') if x.startswith('e-')]
[100001, 100011, 100009]

如果您希望所有项目不仅以e-开头,请删除if x.startswith('e-')部分。

>>> [int(x.split('-')[1]) for x in s.split(',')]
[100001, 100001, 100011, 100009]

如果您只想要唯一的项目,则将列表传递给set()或使用带有生成器表达式的集合。

答案 1 :(得分:0)

在逗号上拆分字符串并使用列表解析:

[int(el[2:]) for el in note_to.split(',') if el.startswith('e-')]

我假设你只想在这里获得以e-开头的值;如果你想要不同的东西,你需要澄清你的问题。

因为我们已经确定元素以e-开头,所以获取整数值就像跳过前2个字符一样简单。

演示:

>>> note_to = u'c-100001,e-100001,e-100011,e-100009'
>>> [int(el[2:]) for el in note_to.split(',') if el.startswith('e-')]
[100001, 100011, 100009]

如果您只想获取唯一值,并且顺序无关紧要,请使用一个集合,然后使用str.rpartition()拆分起始字符串(可能超过2)字符或完全丢失,或许):

set(int(el.rpartition('-')[-1]) for el in note_to.split(','))

您可以随时根据您的确切需要将其转回列表。

演示:

>>> set(int(el.rpartition('-')[-1]) for el in note_to.split(','))
set([100001, 100011, 100009])
>>> list(set(int(el.rpartition('-')[-1]) for el in note_to.split(',')))
[100001, 100011, 100009]

答案 2 :(得分:0)

您可以按照以下方式执行此操作:

string = 'c-100001,e-100001,e-100011,e-100009'
your_list = string.split(',e-')[1:]

>>> your_list
[100001,100011,100009]