2

特定の認識されたパターンに従って、文字列の最後のビットを削除する最良の方法は何ですか? 例えば:

s = 'some Strings-and-stuff - SomeOther Strings-and-stuff - TAke.THis last -part away.txt'

戻ります:

'some Strings-and-stuff - SomeOther Strings-and-stuff'

パターン ' -' を検索し、最後の文字列が発生した後に最後の文字列を削除する関数によって操作された' - '場合。

編集:答えは次のように与えられました:

new_string = ' - '.join(s.split(' - ')[0:-1])

私が試した他のこと:

>>> re.sub(r'(.*) - ', '', s[::-1])[::-1]
'some Strings-and-stuff'

提案された.split()関数を使用すると、次のように出力を取得できます。

>>> p = s.split(' - ')
>>> p.pop()
'TAke.THis last -part away.txt'
>>> ' - '.join(p)
'some Strings-and-stuff - SomeOther Strings-and-stuff'

pop()それはうまくいきますが、他の提案された答えは、ライナーやdel機能を取り除くためのより良い方法です。

4

2 に答える 2

2

これには分割を使用します。

In [130]: s = 'some Strings-and-stuff - SomeOther Strings-and-stuff - TAke.THis last -part away.txt'

In [131]: s.split(" - ")[0:-1]
Out[131]: ['some Strings-and-stuff', 'SomeOther Strings-and-stuff']

「 - 」で分割すると、文字列内で「 - 」で区切られたアイテムを含むリストが返されます。

次に、最初のアイテムから最後のアイテムまでインデックスを作成します。これが[0:-1]、分割後にある理由です。

于 2013-05-06T18:37:38.390 に答える