2016-10-17 163 views
-2

Python新手。刪除Python中某些字符後的字符串部分

我想刪除這個詞AND和下面的字符串中的逗號字符的字符串:

MyString = ' x.ABC AND XYZ, \ny.DEF AND Type, \nSome Long String AND Qwerty, \nz.GHI AND Tree \n' 

結果應該是:

MyString = ' x.ABC,\ny.DEF,\nSome Long String,\nz.GHI\n' 

我想要做的它沒有使用正則表達式。

我已經嘗試了各種方法與拆分和連接和索引無濟於事。

任何方向讚賞。

謝謝。

+3

爲什麼不是正則表達式?正則表達式是爲此做出的。 –

+1

使用正則表達式:'re.sub('(AND \ w +),?','',MyString)' –

回答

1

雖然摩西的回答非常好,但我有一個有趣的感覺,這是一個家庭作業問題,並且意味着你不要使用任何進口。無論如何,這裏是沒有進口的答案,它不像摩西或正則表達式那樣的其他答案效率高,但它的作用不如其他人。

MyString = 'x.ABC AND XYZ, \ny.DEF AND Type, \nSome Long String AND Qwerty, \nz.GHI AND Tree \n' 
new_string = '' 
for each in [[y for y in x.split(' AND ')][0] for x in MyString.split('\n')]: 
    new_string+=each 
    new_string+='\n' 

print(new_string) 
+0

如果任何行包含像'AND'之前的'BLAND'這樣的單詞,就會失敗 –

+0

@MosesKoledoye Oh right,forgot在'AND'中放置空格。謝謝。 – MooingRawr

+0

謝謝你!而已。不,這不是家庭作業:) – user1013388

1

您可以分割串入線,並且這些線進一步分成字並使用​​AND(包括自身)後刪除所有詞:

from itertools import takewhile 

''.join(' '.join(takewhile(lambda x: x != 'AND', line.split())) + ',\n' 
             for line in MyString.splitlines()) 

注意,換行符和逗號是手動在每條線用str.join重建後添加。

所有的行然後最終加入使用str.join

0

現在它正在..而且可能避免「追加」關鍵字使得它的真快......

In [19]: ',\n'.join([x.split('AND')[0].strip() for x in MyString.split('\n')]) 


Out[19]: 'x.ABC,\ny.DEF,\nSome Long String,\nz.GHI,\n' 

您可以檢查這個答案,明白爲什麼...

Comparing list comprehensions and explicit loops (3 array generators faster than 1 for loop)

+1

如果一行包含像'AND AND'之前的'BLAND'字樣,則失敗 –

+0

正確...我糾正了它! –

相關問題