在 Python 3 中比较字符串
Posted
技术标签:
【中文标题】在 Python 3 中比较字符串【英文标题】:Comparing Strings in Python 3 【发布时间】:2012-06-14 06:47:31 【问题描述】:我正在编写这个 Python 小程序,它将在 www.fmylife.com 网站上获得新帖子,我希望这个程序打印这些新帖子。即使我刚刚开始,这也是一项简单的任务,但由于某种原因,我无法让代码停止打印同一篇文章。
import urllib.request,time
def getFml():
rawfml = urllib.request.urlopen("http://www.fmylife.com")
refml = rawfml.read()
fml = refml.decode("utf8")
rawfml.close()
return fml
def parseFml(fml):
fml=fml.split('Today,')
fml=fml[1]
for char in fml:
if char in '0123456789<>/="#()-;:"\',':
fml=fml.replace(char,'')
fml=fml.split('FMLapdiv')
fml=fml[0]
fml=fml.split('aa')
fml=''.join(fml)
return fml
listy= ['date','left_parta','votej','idvotea','onclickvote','jTipa','comments','right_partp','fmllink','clear','post','hrefwork','class','dyn','javascript','div','clas-s-right_partp','hrefmiscellaneous','classdyncomments''div','article','idpa','classclear','classpost','hreflove','classfmlling','FMLap','classdate','classleft_parta','id_','nameresume','classjTipa','span','classdyn-commentsspan','clas-s-right_partpspan','classdyn-vote-j','idcotea','hrefjavascript;:','classfmllink','href']
for x in range(len(listy)):
fml=fml.replace(listy[x],'')
return fml
oldfml=''
count=0
while True:
fml=getFml()
fml=parseFml(fml)
count=count+1
if count>1:
oldfml=fml
if oldfml == fml:
time.sleep(300)
else:
print('Today,'+fml)
time.sleep(300)
我的预期输出是获取帖子(我做到了)并打印它。这很好用。唯一的问题是我只希望它打印一次帖子,当它定期在网站上检查时,它会打印多次,我不知道为什么。 提前感谢大家!
【问题讨论】:
您的预期输出是什么?你得到了什么?另外,请使用实际的解析器来解析 html,拆分字符串充其量是脆弱的。您也没有从parseFml()
返回任何内容,只是快速浏览一下。
【参考方案1】:
在这部分代码中:
while True:
fml=getFml()
fml=parseFml(fml)
count=count+1
if count>1:
oldfml=fml
if oldfml == fml:
...
您分配oldfml=fml
在您检查他们的平等。因此,它们总是相等。
我建议进行以下修复:
while True:
if count>1:
oldfml=fml
count=count+1
fml=getFml()
fml=parseFml(fml)
if oldfml == fml:
...
这样一来,oldfml
实际上就会老了。
【讨论】:
我明白你在说什么,但由于某种原因它仍然不断重复。感谢您的努力。 @Tazzer:你确定网站实际上并没有改变吗?如果它们不同,它应该被打印出来,对吧?另外,请修复代码的缩进,现在很难看到 parseFml 实际做了什么。 非常感谢您的建议,我改变了您告诉我的内容,它仍然打印了两次,但后来我注意到 'if count>1' 应该改为 'if count>=1' 所以它也会在第一次通过时注意到它。谢谢。以上是关于在 Python 3 中比较字符串的主要内容,如果未能解决你的问题,请参考以下文章
r“string”b“string”u“string”Python 2/3比较