我无法在Python中进行字符串比较,现在我已经看了这个,并且尝试了很多次,多次击中我的头,这很疯狂,我解释道:
我有一个函数返回一个名为:sites
的元组列表('http://somewebsite.com', 'somewebsite')
('http://somewebsite2.com', 'somewebsite2')
('http://somewebsite3.com', 'somewebsite3')
现在知道网站的标题,例如:somewebsite2 我使用for循环:
for url, name in sites:
if name == title:
screamandshout()
无论我如何尝试,都无法让匹配发生。
log.log('title type= %s and value= %s' % (str(type(title)), title))
log.log('name type= %s and value= %s' % (str(type(name)), name))
log.log(str(str(name) == title))
log.log(str(name == str(title)))
log.log(str(str(name) == str(title)))
log.log(str(name] is title))
我已经确保了类型和价值观,我已经尝试过反向比较,我绝对不知不觉已经失去了几个小时的生命。我有一些如此简单的事情,我不了解puython,因为我已经遵循了所有我能做的事情。
我要做的是将名称与标题相匹配并返回网站。
这是一个可运行的例子,但它有效,这就是为什么我很困惑lol
sites = [
('http://somewebsite.com', 'somewebsite'),
('http://somewebsite2.com', 'somewebsite2'),
('http://somewebsite3.com', 'somewebsite3')
]
print str(type(sites))
title = 'somewebsite2'
for site in sites:
print str(type(site))
for url, name in sites:
if name == title:
print 'MATCH!'
这将输出以下内容
<type 'list'>
<type 'tuple'>
<type 'tuple'>
<type 'tuple'>
MATCH!
哦,我正在使用python 2.7
答案 0 :(得分:1)
dt
和name
的值必须不同。
尝试打印出来 - 可能title
包含一些日志语句未显示的尾随空格(空格,制表符,换行符等)。更改日志语句以使用title
格式作为变量的值,如下所示:
%r
这应该有明显的不同。
在相关的说明中,为什么要使用元组列表然后迭代它们?看起来字典会是一个更好的数据结构,因为它允许使用名称/标题作为键进行有效查找:
log.log('title type= %s and value= %r' % (str(type(title)), title))
log.log('name type= %s and value= %r' % (str(type(name)), name))
如果您无法修改函数以返回字典,并且需要对同一数据执行多次查找,则可以将其返回值转换为字典:
if title in sites:
screamandshout()