「許可よりも許しを依頼する方が簡単」のPythonの哲学(EAFP)に続いて、私はあなたが理解し、以降の保守が容易であるサブルーチンを作成する提案は、あなたのすべきセパレータの変更。
SEPARATOR = u"!"
def process_string(s):
try:
return s[:s.index(SEPARATOR)]
except ValueError:
return s
この関数は、区切り文字として定義した文字列を最初から最後まで返します。セパレータが見つからない場合は、文字列全体が返されます。この関数は、改行に関係なく機能します。セパレータが変更された場合は、単にSEPARATOR
に変更してください。
ValueError
は、文字列内の文字はない(コマンドラインでそれを試すのインデックスを要求したときに発生する例外です:。"Hola".index("1")
(ValueError: substring not found
を発生させます)ワークフローは、時間のほとんどは、あなたがSEPARATOR
文字を期待していることを前提としてい文字列内にあることを確認してから、最初に許可を求めることなく(SEPARATOR
が文字列内にあるかどうかをテストします)、失敗した場合(index
メソッドが呼び出されてValueError
)、許しを求めます(EAFP)は、適用するとPythonとみなされます。
これは単純な問題です。
'[^。]'は '.'以外の文字にマッチします。私はそれがあなたが意味するものだとは思わない。 –
申し訳ありません、はい...それはまたすべきです! – Relic