0
string= "im fine.gds how are you"

if '.gds' or '.cdl' in string :

    a=string.split("????????")

.gds上記の文字列には、または.cdl拡張子が含まれる場合があります。拡張子に基づいて文字列を分割したい。

ここで、パラメーターを分割関数に渡す方法示し.gdsます。split(".gds").cdlsplit(".cdl")

4

7 に答える 7

6

ifステートメントを分割する必要があると思います:

if '.gds' in string:
    a = string.split('.gds')
elif '.cdl' in string:
    a = string.split('.cdl')
else:
    a = string # this is a fallback in case none of the patterns is in the string

さらに、あなたのin発言は正しくありません。だったはずです

if '.gds' in string or '.cdl' in string:

このソリューションでは、パターンの 1 つだけが文字列に含まれることを想定していることに注意してください。両方のパターンが同じ文字列で発生する可能性がある場合は、Vikas の回答を参照してください。

于 2012-09-26T12:32:21.663 に答える
5

正規表現モジュールを使用して、またはreで分割しますpattern1pattern2

import re
re.split('\.gds|\.cdl', your_string)

例:

>>> re.split('\.gds|\.cdl', "im fine.gds how are you")
['im fine', ' how are you']
>>> re.split('\.gds|\.cdl', "im fine.cdl how are you")
['im fine', ' how are you']
>>> re.split('\.gds|\.cdl', "im fine.cdl how are.gds you")
['im fine', ' how are', ' you']
于 2012-09-26T12:34:27.993 に答える
1

次のような関数を定義してみてください。

def split_on_extensions(string, *extensions):
    for ext in extensions:
        if ext in string:
            return string.split(ext)
    return string

もちろん、拡張機能を指定する順序は重要です。最初の拡張機能で分割するからです...

于 2012-09-26T12:35:41.870 に答える
0

タグは最初の後方参照にキャプチャされます。の疑問符regexは星を怠惰にし、貪欲な星のように最後のタグの前ではなく、最初の終了タグの前で停止するようにします。

この正規表現は、のように、内部にネストされたタグと適切に一致しません<TAG>one<TAG>two</TAG>one</TAG>

于 2012-09-26T12:46:04.893 に答える
0

もう 1 つのオプションは、BIF str.partitionを使用することです。これがどのように機能するかです:

sring= "im fine.gds how are you"
three_parts_of_sring = sring.partition('.gds')
>>> three_parts_of_sring
('im fine', '.gds', ' how are you')

それを小さな機能とセットに入れます。

于 2012-09-26T13:25:04.693 に答える
0

2人のうちの1人がそこにいるという保証はありますか?

a = next( string.split(v) for v in ('.gds','.cdl') if v in string )

そこにあると確信できない場合は、StopIterationで発生した をキャッチできnextます。

try:
    a = next( string.split(v) for v in ('.gds','.cdl') if v in string )
except StopIteration:
    a = string #????
于 2012-09-26T12:37:44.760 に答える
0

セパレーターを繰り返すことができます:

string= "im fine.gds how are you"
separators = ['.gds', '.cdl']
for separator in separators:
    if separator in string:
        a = string.split(separator)
        break
else:
    a = []
于 2012-09-27T07:11:11.327 に答える