Python中的字符串比较,对首字母不区分大小写

时间:2013-01-22 10:21:04

标签: python case-insensitive

我需要匹配以下字符串File system full。问题是起始F可以是小写或大写。当字符串比较通常区分大小写时,如何在Python中执行此操作?

9 个答案:

答案 0 :(得分: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'

答案 1 :(得分:3)

在比较字符串之前,您可以lower

答案 2 :(得分:2)

test_string = "File system full"
if "file system full" == test_string.lower():
    # do stuff

答案 3 :(得分:1)

>>> s = 'ABC'
>>> s.lower()
'abc'
>>>

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

答案 4 :(得分:1)

尝试将字符串转换为任何常见(较低或较高)的情况,然后进行比较

答案 5 :(得分:1)

if "File system full".lower() == test_string.lower():
    print True

答案 6 :(得分:1)

你可以这样试试,

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

有关详细信息,请re.IGNORECASE

答案 7 :(得分: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

答案 8 :(得分:0)

您也可以采用以下方式:

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

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