2016-10-17 5 views
-2

Python初心者。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' 

私がやりたいのですがそれは正規表現を使わずに。

私は分割と結合とインデックスを使用してさまざまな方法を試しています。

いずれかの方向が高く評価されています。

ありがとうございました。

+3

なぜ正規表現はありませんか?正規表現はこれのために作られています。 –

+1

regex: 're.sub( '(AND \ w +),?'、 ''、MyString)' –

答えて

1

モーゼスの答えは本当に良いですが、これは宿題の質問であり、あなたが輸入品を使わないことを意味するという面白い気持ちがあります。とにかくここには輸入のない答えがありますが、それはMosesやRegexのような他の答えほど効率的ではありませんが、他の人たちと同じようには機能しません。

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

'BLAND'の前に' AND'のような単語が含まれていると失敗します –

+0

@MosesKoledoyeああ、忘れました空白を '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

今は働いている...と、おそらく「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' 

あなたは理由を理解するには、この答えを確認することができます...

Comparing list comprehensions and explicit loops (3 array generators faster than 1 for loop)

+1

'BLAND'のような単語が' AND'の前に来ると、これは失敗します –

+0

右...私はそれを修正しました! –

関連する問題