[英]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'
您可以查看此答案以了解原因...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.