繁体   English   中英

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

[英]String comparison in Python that is case-insensitive for first letter

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

我将为您提供布尔值指示器供您使用(为了简洁起见,而不是实际的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'

您可以在比较之前降低字符串。

test_string = "File system full"
if "file system full" == test_string.lower():
    # do stuff
>>> s = 'ABC'
>>> s.lower()
'abc'
>>>

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

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

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

你可以这样尝试

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

有关更多信息,请重新注册。

您可以使用此功能
这里,
使用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

您也可以按照以下方式进行操作:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM