2016-10-17 165 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

正确...我纠正了它! –

相关问题