我有2个相同长度的列表。一个包含我想要找到的子字符串,一个包含我试图找到子字符串的较长字符串(它总是在行的开头)。我有的列表包含一个子字符串不在字符串中的条目;第二个条目在字符串中有子字符串。
然而,看起来python无法弄清楚子串是否存在。我尝试了很多不同的方法。
if substring in string
if string.find(substring) != -1
if string.startswith(substring) != -1
前两个“如果” 上面的陈述总是返回false。最后一个“if”语句始终返回true。
def agentID():
index = 1
while index < 3:
ID = linecache.getline('/home/me/project/ID', index)
agentLine = linecache.getline('/home/me/project/agentIDoutput', index)
str(agentLine)
if agentLine.startswith('%s' % str(ID)) != -1:
print("%s: Proper Agent ID %s found in client.keys" % (env.host_string, ID))
index = index + 1
else:
print("I couldn't find %s in the line %s" % (ID, agentLine))
index = index + 1
这看起来非常简单明了。我甚至尝试显式转换为字符串,以确保我搜索相同的类型。这就是我在想我的错误,但似乎把它们都解释为字符串。
答案 0 :(得分:0)
string.startswith()
会返回True
或False
,它们实际上分别是整数值1
和0
。
因此,if string.startswith(substring) != -1
始终为True
。
显然,您的子字符串根本不存在于您的字符串中。
答案 1 :(得分:0)
print
是你的朋友。我试过一个快速测试:
>>> import linecache
>>> print(repr(linecache.getline('tmp/testfile.txt', 1)))
'line 1\n'
linecache
为您提供包括换行符在内的完整行。把它从最后剥离。当我在这里时,你还清理了其他一些问题
def agentID():
for index in range(1,4):
ID = linecache.getline('/home/me/project/ID', index).strip()
agentLine = linecache.getline('/home/me/project/agentIDoutput', index)
if agentLine.startswith(ID):
print("%s: Proper Agent ID %s found in client.keys" % (env.host_string, ID))
else:
print("I couldn't find %s in the line %s" % (ID, agentLine))