Python:如何只从字符串中删除第一个单词

Joe*_*bey 9 python-2.7

输入字符串如下:

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)


Roc*_*key 5

如果您不依赖于正则表达式,您可以执行以下操作:

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)


Ble*_*der 5

您还可以使用.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)


060*_*002 3

可以更简单:

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)