输入字符串如下:
line = "Cat Jumped the Bridge"
输出应该是“跳过桥梁”。
我试过
s2 = re.match('\W+.*', line).group()
但它返回
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'
显然这场比赛失败了。
感谢您的任何建议。 乔
答案 0 :(得分:12)
Python的split有一个名为maxsplit
的可选第二个参数,用于指定最大的分割数量:
line = "Cat Jumped the Bridge"
s2 = line.split(' ', 1)[1]
引用str.split
的文档:
使用sep作为分隔符字符串,返回字符串中的单词列表。如果给出maxsplit,则最多完成maxsplit分割
所以解释一下这段代码:
str.split(' ', 1)
创建一个包含两个元素的列表:第一个元素是第一个单词(直到它到达空格),第二个元素是字符串的其余部分。为了仅提取字符串的其余部分,我们使用[1]
来指示第二个元素。
注意:如果您担心有多个空格,请使用None
作为str.split
的第一个参数,如下所示:
line = "Cat Jumped the Bridge"
s2 = line.split(None, 1)[1]
答案 1 :(得分:4)
如果你不依赖于正则表达式,你可以这样做:
In [1]: line = "Cat Jumped the Bridge"
In [2]: s2 = ' '.join(line.split()[1:])
In [3]: s2
Out[3]: 'Jumped the Bridge'
line.split()
获取字符串并将其拆分为空格,返回包含每个单词作为项目的列表:
In [4]: line.split()
Out[4]: ['Cat', 'Jumped', 'the', 'Bridge']
从该列表中,我们使用[1:]
获取第二个元素(跳过第一个单词)及其后的所有内容:
In [5]: line.split()[1:]
Out[5]: ['Jumped', 'the', 'Bridge']
然后最后一篇文章使用join
将它们全部加在一起,这里我们使用空格字符将列表中的所有字符串“连接”成一个字符串:
In [6]: ' '.join(line.split()[1:])
Out[6]: 'Jumped the Bridge'
答案 2 :(得分:4)
您还可以使用.partition()
:
>>> line = "Cat Jumped the Bridge"
>>> word, space, rest = line.partition(' ')
>>> word
'Cat'
>>> space
' '
>>> rest
'Jumped the Bridge'
要修复现有内容,请添加一个捕获组并使用\w
代替\W
(它们是对立的):
>>> re.match(r'(\w+)', line).group()
'Cat'
答案 3 :(得分:2)
可以更简单:
line = "Cat Jumped the Bridge"
s2 = " ".join(line.split()[1:])
使用正则表达式:
line = "Cat Jumped the Bridge"
s2 = re.sub('^\S+\s+', '', line)
答案 4 :(得分:1)
或.........
words = ["Cat", "Cool", "Foo", "Mate"]
sentence = "Cat Jumped the Bridge"
for word in words:
if word in sentence:
sentence = sentence.replace(word, "", 1)
break
否则...
sentence = "Cat Jumped the Bridge"
sentence = sentence.split(" ")
sentence.pop(0)
sentence = " ".join(sentence)
答案 5 :(得分:0)
def delete_first_word(p):
letter = 0
for e in p:
if e[0] == " ":
return line[letter + 1:]
else:
letter = letter + 1
line = "Cat Jumped the Bridge"
print delete_first_word(line)