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
>>> s = 'ABC'
>>> s.lower()
'abc'
>>>

在您可以使用任何模式进行匹配之后。

于 2013-01-22T10:22:36.627 回答
1

尝试将字符串转换为任何常见的(小写或大写)大小写,然后进行比较

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

你可以这样试试

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

欲了解更多信息,请 re.IGNORECASE

于 2013-01-22T10:47:35.497 回答
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

在空闲时运行

>>> 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 回答
0

您也可以通过以下方式进行操作:

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

(?i)匹配大写和小写字母。

于 2013-02-25T15:51:12.680 回答