我有一个字符串:
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])
我的意思是我使用了循环。
答案 0 :(得分:1)
将列表理解与str.startswith
和str.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]