从两个字符之间提取字符串的部分

时间:2015-07-14 01:46:56

标签: python string

如果我有这样的字符串:

string = "12345|67891|23456|123456?"

我该如何取出" 12345"和" 67891"等(管道之间的字符)并将它们一直添加到列表中直到问号(我在我的代码中使用问号作为终止字符)?

这里有一个类似的问题: How do I find the string between two special characters?

但我认为我的不同之处在于我需要在相同的单行字符串中多次执行此操作。

这是我希望实现的目标:

[PROGRAM BEGINS]
>>>string = "12345|67891|23456|123456?"
>>>string_list = []
>>>#some code to extract it and add it to a list called string_list
>>>print string_list
["12345","67891","23456","123456"]
[PROGRAM TERMINATES]

提前致谢!!

6 个答案:

答案 0 :(得分:2)

如果问号始终在最后。

>>> string = "12345|67891|23456|123456?"
>>> string.rstrip('?').split('|')
['12345', '67891', '23456', '123456']

正则表达式执行此类任务的速度相对较慢

答案 1 :(得分:1)

您可以使用regex分割任何不是数字\D的内容:

import re

matches = filter(None, re.split('\D', "12345|67891|23456|123456?"))
print matches # ['12345', '67891', '23456', '123456']

答案 2 :(得分:1)

你可以用re module这样做:

>>>import re
>>>s = "12345|67891|23456|123456?"
>>>string_list = re.findall(r'\d+',s)
>>>string_list
['12345', '67891', '23456', '123456']

答案 3 :(得分:1)

您不需要使用问号:

>>> string = "12345|67891|23456|123456"
>>> string.split('|')
['12345', '67891', '23456', '123456']
>>>

答案 4 :(得分:1)

您可以使用分割功能。 Str.split(“|”)并将结果赋给数组变量。

答案 5 :(得分:1)

考虑到您正在使用'?'作为终止字符。最安全的方法是:

>>> string = "12345|67891|23456|123456?"
>>> string.split('?')[0].split('|')
['12345', '67891', '23456', '123456']