有两个字符串列表,我正试图在它们之间找到匹配项。它们都包含具有不同格式的字符串,但它们指向相同的信息列表
一个列表包含格式为“A02A18”的字符串,而下一个列表可能包含与“a2a18”相同的字符串
还有一些字符串可能看起来像“A05”,与“a5”相配
我在标题中说“某些0”,因为如果我从字符串中去掉所有0,我不希望有“A15A20”和“a15a2”这样的字符串匹配(显然,因为05与5相同,但20与2不同)
我正在寻找一种方法,可以让他们相互匹配,如果找到
理想的情况是
first = "A02A18"
second = "a2a18"
if first == second:
print "Yes"
我所拥有的-
最初,我有一个语句可以匹配字符串,比如“A05”和“a5” 这看起来像
first = "A05"
second = "a5"
if first[1:].lstrip("0") == second[1:].lstrip("0"):
print "yeah"
这将取两个字符串,并在第一个索引后进行比较,因此在前面的示例中,“A05”和a5将在第一个字母后进行比较,以忽略大小写。然后lstrip“0”将剥离将在那里的0。我最初在两边都画了一条0,以防将来一条线的“a05”取代了“a5”(只是试图覆盖所有的碱基)
虽然这种方法适用于这种情况,但它不适用于“A02A18”和“a2a18”等字符串
假设您的意思是说除非最后一个字符是零,否则所有的零都应该被忽略,那么下面的代码应该能够执行该任务
此代码为第一个调用返回
True
,为第二个调用返回False
。将来,请记住string.lower()
和string.upper()
函数。在这种情况下,它们非常有用我将使用正则表达式删除字母后面的零,并比较结果(大写源代码,以便能够在不使用大写的情况下进行比较):
结果:
注意:这也适用于
A000B12
:零刚刚被删除。但是,如果存在误报风险,因为输入可以是A00B1
和AB1
,那么convert函数可以创建字符串+转换整数的列表作为替代:或者更简单的版本从一开始就将源代码大写(更短,可能更快,因为只有一个对
upper
的调用)相关问题 更多 >
编程相关推荐