1

次の文字列を一致させる必要がありますFile system full。問題は、開始 F は小文字または大文字にすることができることです。通常、文字列比較で大文字と小文字が区別される場合、Python でこれを行うにはどうすればよいですか?

4

9 に答える 9

4

if簡潔にするために、実際のブロックではなく、ブール値のインジケーターを提供します。

正規表現の使用:

import re
bool(re.match('[F|f]',<your string>)) #if it matched, then it's true.  Else, false.

文字列が出力のどこにでもある可能性がある場合(文字列を想定しています)

import re
bool(re.search('[F|f]ile system full',<your string>))

その他のオプション:

「f」と「F」のチェック

<your string>[0] in ('f','F')

<your string>.startswith('f') or <your string>.startswith('F')

そして、以前に提案されたlower方法があります:

<your string>.lower() == 'f'
于 2013-01-22T10:25:22.437 に答える
3

比較する前に文字列を下げることができます。

于 2013-01-22T10:22:23.177 に答える
2
test_string = "File system full"
if "file system full" == test_string.lower():
    # do stuff
于 2013-01-22T10:22:16.683 に答える
1

このように試すことができます。

>>> import re
>>> bool(re.match('File system full','file system full', re.IGNORECASE))
True

詳しくはre.IGNORECASE

于 2013-01-22T10:47:35.497 に答える
1
>>> s = 'ABC'
>>> s.lower()
'abc'
>>>

マッチングに任意のパターンを使用できた後。

于 2013-01-22T10:22:36.627 に答える
1

この関数を使うことができます.
ここで,
どちらの文字列も を使って小文字に変換されますstr.lower(). . 両方の文字列
の最初の文字が同じなら, それ以外の場合を返しTrue
ます.False

def match1(str1 ,str2):
    str1 = str1.lower() # to ignore the case
    str2 = str2.lower()
    if str1[0] == str2[0]:
        return True
    return False

IDLE で実行

>>> mystr = 'File system full'
>>> test1 = 'Flow'
>>> test2 = 'flower'
>>> match1(mystr,test1)
True
>>> match(mystr,test2)
True 


入力文字列の文字の小文字と大文字の両方が必要になるため、この手法の使用はお勧めしませんが、機能
します:)

def match2(str1 ,str2):
    if str2[0] == str1[0].lower()\
    or str2[0] == str1[0].upper():
        return True
    return False
于 2013-01-22T10:53:18.583 に答える
1

文字列を一般的な(小文字または大文字の)ケースに変換してから比較してみてください

于 2013-01-22T10:23:30.010 に答える
1
if "File system full".lower() == test_string.lower():
    print True
于 2013-01-22T10:24:47.900 に答える
0

以下の方法でもできます。

st="File system full"       
vl = re.search(r"(?i)File system full", st)

(?i)大文字と小文字の両方に一致します。

于 2013-02-25T15:51:12.680 に答える