csz9981
2022-05-15 08:55
采纳率: 92.9%
浏览 11
已采纳

在re.split(pattern,str1)功能中,4个成功了,1个没成功,请分析下原因?

问题遇到的现象和发生背景

我在体验re.split功能的时候,把同一个str用不同的字符分隔,结果,5个测试中,123都正常输出,但是print('4',list1)没能正常输出,请帮忙找下原因,谢谢。

问题相关代码,请勿粘贴截图
import re

pattern=' '
str1='123 45@678$345*67/890'
list1=re.split(pattern,str1)
print('1',list1)

pattern='@'
str1='123 45@678$345*67/890'
list1=re.split(pattern,str1)
print('2',list1)

pattern='$'
str1='123 45@678$345*67/890'
list1=re.split(pattern,str1)
print('3',list1)

pattern='*'
str1='123 45@678$345*67/890'
list1=re.split(pattern,str1)
print('4',list1)

pattern='/'
str1='123 45@678$345*67/890'
list1=re.split(pattern,str1)
print('5',list1)

print('6',str1.split('$'))


# 1 ['123', '45@678$345*67/890']
# 2 ['123 45', '678$345*67/890']
# 3 ['123 45@678$345*67/890', '']
# 5 ['123 45@678$345*67', '890']
# 6 ['123 45@678', '345*67/890']

运行结果及报错内容

1 ['123', '45@678$34567/890']
2 ['123 45', '678$345
67/890']
3 ['123 45@678$345*67/890', '']
Traceback (most recent call last):
File "D:/我的坚果云/py lianxi/lianxi 1/lianxi1.py", line 6703, in
list1=re.split(pattern,str1)
File "C:\Python37\lib\re.py", line 215, in split
return _compile(pattern, flags).split(string, maxsplit)
File "C:\Python37\lib\re.py", line 288, in _compile
p = sre_compile.compile(pattern, flags)
File "C:\Python37\lib\sre_compile.py", line 764, in compile
p = sre_parse.parse(p, flags)
File "C:\Python37\lib\sre_parse.py", line 924, in parse
p = _parse_sub(source, pattern, flags & SRE_FLAG_VERBOSE, 0)
File "C:\Python37\lib\sre_parse.py", line 420, in _parse_sub
not nested and not items))
File "C:\Python37\lib\sre_parse.py", line 645, in _parse
source.tell() - here + len(this))
re.error: nothing to repeat at position 0

我的解答思路和尝试过的方法
我想要达到的结果

pattern=''
str1='123 45@678$345
67/890'
list1=re.split(pattern,str1)
print('4',list1)

用'*',分隔str1

  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 邀请回答

1条回答 默认 最新

  • Kappuccinno 2022-05-15 09:13
    最佳回答

    因为$和*在正则表达式是有含义的,前者表示匹配末尾字符的意思,后者表示前一个字符重复0至n次(因为没有前一个字符所以报错)所以对于3和4,你需要分别在这两个符号pattern前加入\转义字符,才能达到你的意思

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题