Python字符串比较?

时间:2016-04-25 23:39:28

标签: python string comparison equality

我无法在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

1 个答案:

答案 0 :(得分:1)

dtname的值必须不同。

尝试打印出来 - 可能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()