【发布时间】:2020-04-18 15:56:13
【问题描述】:
假设我有两个字符串:
string_ex1 = 'AbC024'
string_ex2 = 'aBc24'
string_ex3 = 'AbC24'
string_ex4 = 'aBc24'
如果我相互比较,我想要两个字符串相等的结果。 例如'AbC' == 'aBc', '024' == '24'
我已经知道如果我用 \w+ 和 \d+ 区分它们并分别转换为小写和 int,我可以得到一个结果说两个字符串是相同的。但我想知道是否有一些更简单的功能可以做到这一点。
string1_str = lower(re.findall('\w+', string_ex1))
string1_int = int(re.findall('\d+', string_ex1))
string2_str = lower(re.findall('\w+', string_ex2))
string2_int = int(re.findall('\d+', string_ex2))
if string1_str == string2_str and string1_int == string2_int:
print('identical')
*编辑 比较应该适用于 string_ex1、string_ex2 和 string_ex3、string_ex4
【问题讨论】:
-
那么,更准确地说,您想忽略大小写和前导零?
-
你能分享一下你现在用来完成任务的代码吗?这将使定义“更简单”更容易:-)
-
@DeepSpace 是的。正是
-
当您回复要求澄清的评论时,通常最好编辑您的问题,而不是在 cmets 中详细说明。问题应该是独立的,部分原因是并非所有读者都阅读所有 cmets。考虑将标题更改为“忽略大小写和前导零时比较两个字符串”。
-
一种方法是使用正则表达式
(?<=\D)(?=\d)将每个字符串分成两部分。例如,ABC012和abc12将分别拆分为["ABC", "012"]和["abc", "12"]。然后分别比较"ABC"和"abc"大小写,并将"012"和"12"转换为整数后比较12和12。