Python字符串比较?

Python字符串比较?,python,string,comparison,equality,Python,String,Comparison,Equality,我无法在Python中使用字符串比较,现在我已经看了这一点,并且尝试了很多次,多次击中我的头部,这太疯狂了,我解释道: 我有一个返回元组列表的函数,名为:sites ('http://somewebsite.com', 'somewebsite') ('http://somewebsite2.com', 'somewebsite2') ('http://somewebsite3.com', 'somewebsite3') 现在知道一个网站的标题,例如:somewebsite2 我使用for循环

我无法在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))
我已经确定了类型和价值观,我尝试了反向比较,我完全震惊于我在这方面损失了几个小时的生命。我有一件事很简单,我不理解普顿,因为我已经尽我所能地遵循了

我想做的是将名称与标题匹配,然后返回网站

这是一个运行良好的例子,但它的工作,这就是为什么我这么困惑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

名称和标题的值必须不同

尝试打印出来-可能
标题
包含一些日志语句中没有显示的尾随空格(空格、制表符、换行符等)。更改日志语句以使用变量值的
%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()
如果无法修改函数以返回字典,并且需要对同一数据执行多个查找,则可以将其返回值转换为字典:

sites = {name:url for url, name in f()}

您是否尝试添加
其他:打印(名称、标题)
?请将您的程序缩减到其他人能够运行的尽可能小的完整程序。请将整个程序复制粘贴到您的问题中。有关更多信息,请参见。
“apple”==“apple”
…通常
=
测试Python中字符串之间的相等性。你确定你的字符串是相等的吗?@RonAppleton:你是否尝试过按我的回答中所述打印
title
,即使用
%r
而不是
%s
?非常感谢,事实上,在使用%r之后,从xml树节点返回值的函数确实添加了一个尾随空格。我猜这就是你学习的方式。非常感谢你。另外,对于字典的建议,我将使用这个。该列表由一个会话请求填充:livePage=session.get(portal\u add+'/client\u area/live.php',headers=headers)pages=re.compile(“\{link:\'(.*?\'.\'.\'”(.*?\'),re.VERBOSE.).findall(livePage.content)returnpages@RonAppleton:没问题。要修复它,可以在从xml节点检索时,或者在执行比较时,使用
strip()
标题
:如果name==title.strip()
。我仍然认为你最好使用字典。谢谢,我完全同意,我将使用你给出的字典示例,再次感谢。如果在将标题与姓名匹配时使用dict返回url,我将如何处理?或者更确切地说,如果我在站点中找到标题,请返回相应的url?我认为,如果站点中的标题:返回站点[title]