在Python中删除某些字符后的字符串部分

在Python中删除某些字符后的字符串部分,python,string,Python,String,Python新手 我想删除以下字符串中单词和逗号字符之间的子字符串: 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' 我不想用正则表达式 我尝试过各种拆分、联接和索引的方法,但都没有效果 任何方向都欢迎 谢谢。您可以将字

Python新手

我想删除以下字符串中单词和逗号字符之间的子字符串:

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'
我不想用正则表达式

我尝试过各种拆分、联接和索引的方法,但都没有效果

任何方向都欢迎


谢谢。

您可以将字符串拆分为行,然后将行进一步拆分为单词,并使用将所有单词放在
之后(包括其本身):

请注意,换行符和逗号是在使用重新构造每行之后手动添加的


所有的行最后都用
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'
你可以检查这个答案来理解为什么


为什么没有正则表达式?Regex就是为这个而设计的。使用Regex:
re.sub(“(AND\w+),”,MyString)
如果一行包含
BLAND
这样的单词出现在
之前,这会失败,
如果任何一行包含
BLAND
这样的单词出现在
之前和
@MosesKoledoye哦,对了,忘了在“AND”中加空格。谢谢
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'