【问题标题】:How do I search a field for a substring?如何在字段中搜索子字符串?
【发布时间】:2013-05-10 04:47:08
【问题描述】:
Number1 Number2 Info1
1) 19124451932~18374913342~0- 9124441932
2) 18436889349~17064219321~0- 2024281123
3) 13352808654~19703842247~0- 9703842247
我正在寻找一个if-clause,当Info1 的最后9 位数字是该行的Number1 和/或Number2 的子字符串时,它会评估True。
这将是 python 中更大的 If 条件的一部分。我可以找到很多方法来在子字符串中搜索完整字符串,但是我找不到任何关于根据字符长度在完整字符串中搜索子字符串的方法。
非常感谢。
【问题讨论】:
标签:
python
string
search
substring
【解决方案1】:
这应该相当容易。假设这些行看起来就像你写的一样,你可以这样做:
number1, number2, info1 = (s.strip() for s in line.split('~'))
if any(info1[-9:] in n for n in (number1, number2)):
pass # Do stuff
它的工作原理如下:
- 首先,将您的行分成三个相关部分,并将它们分配给您的变量名称。
- 然后,对于每一个
(number1, number2),查看是否存在由info1 的最后九个字符组成的子字符串。如果是,则您的条件已满足。
【解决方案2】:
类似这样的:
import re
with open("abc") as f:
next(f) #skip header
for line in f:
n1,n2 = re.findall("(\w+)~",line)
info = line.split()[-1]
if info[-9:] in n1 or info[-9:] in n2:
print "yes"
else:
print "no"
输出:
no
no
yes