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'
我想在不使用正则表达式的情况下这样做。
我尝试了各种方法,分割,连接和索引都无济于事。
任何方向赞赏。
感谢。
答案 0 :(得分:1)
您可以将字符串拆分为行,然后将行拆分为单词,并使用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
最终加入所有行。
答案 1 :(得分: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)
答案 2 :(得分: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)