我使用Python 3.7.4
我想知道如何分割字符串,例如
0-12+65+89+19##1-23+43+1+2
,
这样我得到-
之后+
到两个#
之间的数字,
然后将数字(作为字符串)放入列表中,例如在这种情况下
['12','65','89','19']
。
有人可以告诉我该怎么做吗?
还有,只是“ ##”后面的部分有办法做同样的事情吗? 有人可以显示吗?
答案 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}}