2016-05-15 7 views
4

私は、ドキュメントの再検索、Webの検索、そして数時間の作業を数多く試してきましたが、まだいくつかの部分を削除する方法を見つけることができませんでした。文字列。Python 3で文字列の一部を取り除く

ので、文字列は次のようになります、

リンダ・ロスト(シークレットIcecone株式会社)はOsmon(フォージ)で自分のクロノスを失いました。仲裁人でのリバティープライム(出口戦略)によるファイナルブロー合計値:1,865,802,910.96 ISK

基本的に、文字列がウェブサイトのメタデータから引き出されると、文字列内のすべての名前とものが変更されます。唯一確かなのは、 'Final Blow by'、 'Total Value:'、 'ISK'のようなものです。

私が何をすべきかを把握しようとしてきたのは、その前に来た「Total Value:1,865,802,910.96 ISK」の部分を取り除いて返すことでした。

ご協力いただきまして誠にありがとうございます。ありがとう!

+3

'someString [:someString.find( '合計値:')]' – poke

+1

Awsomeさん!助けてくれてありがとう。それは素晴らしい仕事をした。 – Cameron

+1

's.split( '合計値:')[0]' –

答えて

2

pat = re.compile(r'(.*?)Total Value: [\d,.]* ISK') 
m = pat.match(s) 
m.group(1) 
'Linda Lost (Secret Icecone Incorporated) lost their Kronos in Osmon (The Forge). Final Blow by Liberty Prime (Exit-Strategy) flying in a Arbitrator. ' 

それとも可能性以下のハックを実行してください

s.rsplit('.',2)[0] 
'Linda Lost (Secret Icecone Incorporated) lost their Kronos in Osmon (The Forge). Final Blow by Liberty Prime (Exit-Strategy) flying in a Arbitrator' 
2

これは動作します。

= t.rfind( "合計")

印刷さ(t [:])

t = "Linda Lost (Secret Icecone Incorporated) lost their Kronos in Osmon (The Forge). Final Blow by Liberty Prime (Exit-Strategy) flying in a Arbitrator. Total Value: 1,865,802,910.96 ISK" 

次のように、正規表現を使用することができ

+0

'合計。+'を使用すると「Total」は名前の一部として表示される可能性があるため、危険です。より具体的なパターンや貪欲でない繰り返しは、安全に動作するかもしれません。 – Blckknght

+0

パターンに「$」が表示されていませんか?これは、記述されたパターンが最後にマッチしなければならないことを意味します。 –

+0

それは問題のパターンの始まりです。もし 'Linda Lost'の代わりに、文字列の先頭の名前が' Foo Total'だったらどうでしょうか?あなたが与えたパターンは、すべてを捨ててしまいますが、 'Foo'です。注意しておきたいのは、ここで説明している文字列が何を意味するのかを知っているからです(MMO Eve Onlineのkillmailの一部です)。プレイヤーや企業(Eve's Guilds)が、不注意なkillmail解析コード(「Total Value」や「Final Blow by」など)を壊すような名前を意図的に使用しているのを見ても、私は全く驚くことはありません。 – Blckknght

0
t = "Linda Lost (Secret Icecone Incorporated) lost their Kronos in Osmon (The Forge). Final Blow by Liberty Prime (Exit-Strategy) flying in a Arbitrator. Total Value: 1,865,802,910.96 ISK" 

t.split('Total Value:')[0] 
関連する問題