Python:将字符串从特定字符切成特定字符

时间:2019-09-10 06:40:22

标签: python string

我使用Python 3.7.4

我想知道如何分割字符串,例如 0-12+65+89+19##1-23+43+1+2, 这样我得到-之后+到两个#之间的数字, 然后将数字(作为字符串)放入列表中,例如在这种情况下 ['12','65','89','19']

有人可以告诉我该怎么做吗?

还有,只是“ ##”后面的部分有办法做同样的事情吗? 有人可以显示吗?

6 个答案:

答案 0 :(得分:0)

这是仅使用字符串split的一种方法:

s.split('-')[1].rstrip('#').split('+')

其中s是您的字符串。

示例

s = "0-12+65+89+19##"

print(s.split('-')[1].rstrip('#').split('+'))
# ['12', '65', '89', '19']

答案 1 :(得分:0)

这符合您的需求吗?此方法使用注释中建议的正则表达式。

import re
text = "0-12+65+89+19##"
text=text.split("##")
text=text[0].split("-")
the_list = re.findall(r'\d+', text[1])
print(the_list)

结果为['0', '12', '65', '89', '19']

答案 2 :(得分:0)

In [1]:  mystr="0-12+65+89+19##"                                                                                                             

In [2]:  next((s for s in mystr.split('-') if s.endswith('##'))).rstrip('##').split('+')                                                     
Out[2]: ['12', '65', '89', '19']

将首先使用-进行拆分,然后从结果列表中找到一个以##结尾的字符串,并在+上拆分该字符串

答案 3 :(得分:0)

如果您想使用正则表达式并可以访问3.6,则可以使用以下方法:

>>> import regex as re
>>> text = "0-12+65+89+19##"
>>> re.search('-((\d+)\+?)*##', text)
>>> m.captures(2)
['12', '65', '89', '19']

普通的re模块不会为重复的组提供多个捕获,因此请记住这一点。

答案 4 :(得分:0)

您可以使用正则表达式

import re

pattern = re.compile(r'([0-9]+)[^-]')  # find number groups after `-` character
result = re.findall(pattern, '0-12+65+89+19##')

# result = ['12', '65', '89', '19']

答案 5 :(得分:0)

执行相同操作的方法有很多,如果字符串以##结尾,则

s[s.find('-')+1:s.find('#')].split('+')

因此,在此更新的问题中,您可以使用此

{{1}}