输入字符串如下:
line = "Cat Jumped the Bridge"
Run Code Online (Sandbox Code Playgroud)
输出应该是"跳过桥".
我试过了
s2 = re.match('\W+.*', line).group()
Run Code Online (Sandbox Code Playgroud)
但它回来了
Traceback (most recent call last):
File "regex.py", line 7, in <module>
s2 = re.match('\W+.*', line).group()
AttributeError: 'NoneType' object has no attribute 'group'
Run Code Online (Sandbox Code Playgroud)
显然这场比赛失败了.
谢谢你的任何建议.乔
Mos*_*she 12
Python的split有一个可选的第二个参数maxsplit,用于指定最大的拆分量:
line = "Cat Jumped the Bridge"
s2 = line.split(' ', 1)[1]
Run Code Online (Sandbox Code Playgroud)
引用文档str.split:
使用sep作为分隔符字符串,返回字符串中单词的列表.如果给出maxsplit,则最多完成maxsplit分割
因此,要解释此代码:
str.split(' ', 1)创建一个包含两个元素的列表:第一个元素是第一个单词(直到它到达空格),第二个元素是字符串的其余部分.为了仅提取字符串的其余部分,我们用于[1]指示第二个元素.
注意:如果您担心有多个空格,None请将其用作第一个参数str.split,如下所示:
line = "Cat Jumped the Bridge"
s2 = line.split(None, 1)[1]
Run Code Online (Sandbox Code Playgroud)
如果您不依赖于正则表达式,您可以执行以下操作:
In [1]: line = "Cat Jumped the Bridge"
In [2]: s2 = ' '.join(line.split()[1:])
In [3]: s2
Out[3]: 'Jumped the Bridge'
Run Code Online (Sandbox Code Playgroud)
line.split() 获取字符串并将其拆分为空格,返回一个包含每个单词作为项目的列表:
In [4]: line.split()
Out[4]: ['Cat', 'Jumped', 'the', 'Bridge']
Run Code Online (Sandbox Code Playgroud)
从该列表中,我们使用以下方法获取第二个元素(跳过第一个单词)及其后的所有内容[1:]:
In [5]: line.split()[1:]
Out[5]: ['Jumped', 'the', 'Bridge']
Run Code Online (Sandbox Code Playgroud)
然后最后一部分是使用 将它们连接在一起join,在这里我们使用空格字符将列表中的所有字符串“连接”回单个字符串:
In [6]: ' '.join(line.split()[1:])
Out[6]: 'Jumped the Bridge'
Run Code Online (Sandbox Code Playgroud)
您还可以使用.partition():
>>> line = "Cat Jumped the Bridge"
>>> word, space, rest = line.partition(' ')
>>> word
'Cat'
>>> space
' '
>>> rest
'Jumped the Bridge'
Run Code Online (Sandbox Code Playgroud)
要修复您现在拥有的内容,请添加一个捕获组并使用\w而不是\W(它们是相反的):
>>> re.match(r'(\w+)', line).group()
'Cat'
Run Code Online (Sandbox Code Playgroud)
可以更简单:
line = "Cat Jumped the Bridge"
s2 = " ".join(line.split()[1:])
Run Code Online (Sandbox Code Playgroud)
使用正则表达式:
line = "Cat Jumped the Bridge"
s2 = re.sub('^\S+\s+', '', line)
Run Code Online (Sandbox Code Playgroud)