2012-12-31 73 views
6

僅刪除第一個字的輸入字符串如下:的Python:如何從一個字符串

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

而不是re.match re.search做我需要的。那就是去掉一行的第一個單詞。如果你很好奇,爲什麼我需要做這樣的事情。這是在使用cmd模塊並嘗試從一行命令中收集參數的上下文中。感謝所有回答的人。 –

回答

1

可以更簡單:

line = "Cat Jumped the Bridge" 
s2 = " ".join(line.split()[1:]) 

使用正則表達式:

line = "Cat Jumped the Bridge" 
s2 = re.sub('^\S+\s+', '', line) 
+0

因爲它第一次+1) – RocketDonkey

1

如果你不依賴於正則表達式,你可以做這樣的事情:

In [1]: line = "Cat Jumped the Bridge" 

In [2]: s2 = ' '.join(line.split()[1:]) 

In [3]: s2 
Out[3]: 'Jumped the Bridge' 

line.split()接受字符串並將其拆分爲空白,返回一個列表,包含NS每個單詞的項目:

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' 
+0

Wa複雜。使用參數進行分割! – Moshe

+0

@Moshe完全忘了那個 - +1給你先生:) – RocketDonkey

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' 
+0

+1,絕對如此。 – RocketDonkey

+0

攪拌機,謝謝你的回答。顯然我今天一直在看代碼太久了。因爲我應該試過s2 = re.search('\ W +。*',line).group()。這會給我想要的。但我有一個re.match來代替。非常感謝。 –

10

Python的split有一個名爲maxsplit可選的第二個參數,以指定最大分割數量:

line = "Cat Jumped the Bridge" 
s2 = line.split(' ', 1)[1] 

要引用文檔fo r str.split

返回字符串中的單詞列表,使用sep作爲分隔符字符串。如果maxsplit給定,最多maxsplit拆分完成

因此,要解釋這個代碼: str.split(' ', 1)創建有兩個元素的列表:第一個元素是第一個字(直到它到達一個空格),而第二作爲字符串的其餘部分。爲了僅提取字符串的其餘部分,我們使用[1]來指示第二個元素。

注意:如果您擔心有多個空格,使用Nonestr.split第一個參數,如下所示:

line = "Cat Jumped the Bridge" 
s2 = line.split(None, 1)[1] 
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) 
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) 
相關問題