簡體   English   中英

在Python中的某些字符之后刪除字符串的一部分

[英]Removing parts of a string after certain chars in 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'

我想在不使用正則表達式的情況下做到這一點。

我嘗試了各種拆分、聯接和索引的方法,但無濟於事。

任何方向表示贊賞。

謝謝。

您可以將字符串拆分為多行,然后將這些行進一步拆分為單詞並使用itertools.takewhile刪除AND之后的所有單詞(本身包括在內):

from itertools import takewhile

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

請注意,在使用str.join重建每一行后手動添加換行符和逗號。

然后使用str.join最終連接所有行。

雖然摩西的回答非常好,但我有一種有趣的感覺,這是一個家庭作業問題,意思是你不要使用任何進口。 無論如何,這是一個沒有導入的答案,它不如摩西或正則表達式等其他答案有效,但它的效果不如其他答案。

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)

現在它正在工作......並且可能避免使用'append'關鍵字使它變得非常快......

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'

您可以查看此答案以了解原因...

比較列表推導式和顯式循環(3 個數組生成器比 1 個 for 循環快)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM