繁体   English   中英

通过 for 循环时,如果变量为真,则打印两次,为假时仅打印一次

[英]When going through a for loop, if the variable is true it prints twice when it false it only prints once

我正在检查网站上的意见,当通过它时,如果它们都匹配,文本将打印两次,当它不匹配时,它只会打印一次,我一直试图弄清楚如何简单地打印真正的匹配并且只打印一次。

CMD 输出如下所示: http : //prntscr.com/h3ioli

import cfscrape, re, os, time
from bs4 import BeautifulSoup



cc = open('cookie.txt').read()
mybbuser, sid = cc.split(':')
MainScrapper = cfscrape.create_scraper()


def substring_after(string, delim,back):
    return string.partition(delim)[back]


suspect = raw_input('User ID: ')

def reputationCheck(userid):
    reputationlist = []
    r = MainScrapper.get('https://v3rmillion.net/reputation.php?uid={}&show=positive'.format(userid), cookies={'mybbuser': mybbuser,'sid': sid})
    soup = BeautifulSoup(r.text, 'html.parser')
    reputations = soup.find_all('a', href=re.compile("member\.php\?action=profile\&uid=(\d+)"))
    for reputation in reputations:
        reputationlist = reputationlist + [substring_after(reputation['href'],'uid=', 2)]
    if soup.find('span', {'class' : 'pages'}):
        pages = soup.find('span', {'class' : 'pages'}).text
        pages = substring_after(pages, '(', 2)
        pages = substring_after(pages, '):', 0)
        soup = BeautifulSoup(r.text, 'html.parser')

        for x in range(1, (int(pages))):
            r = MainScrapper.get('https://v3rmillion.net/reputation.php?uid={}'.format(userid) + '&show=positive&page={}'.format(x + 1), cookies={'mybbuser': mybbuser,'sid': sid})
            soup = BeautifulSoup(r.text, 'html.parser')
            reputations = soup.find_all('a', href=re.compile("member\.php\?action=profile\&uid=(\d+)"))
            for reputation in reputations:
                if not reputation == suspect:
                    reputationlist = reputationlist + [substring_after(reputation['href'],'uid=', 2)]

    for userids in reputationlist:
        if not str(userids) == str(suspect):
            victim = []
            r = MainScrapper.get('https://v3rmillion.net/reputation.php?uid={}'.format(userids) + '&show=positive', cookies={'mybbuser': mybbuser,'sid': sid})
            soup = BeautifulSoup(r.text, 'html.parser')
            reputations = soup.find_all('a', href=re.compile("member\.php\?action=profile\&uid=(\d+)"))
            for reputation in reputations:
                if substring_after(reputation['href'],'uid=', 2) == str(suspect):
                    print(str(userids) + 'exchanged reputation with ' + str(suspect))
                else:
                    pass
if not reputation == suspect:
if not str(userids) == str(suspect):

这些应该是:

if reputation != suspect:
if str(userids) != str(suspect):

也许,您应该将打印功能放在循环之外。 就像是:

a=['x','y','z']
c=''
for b in a:
    c+=b
    print('this is inside loop, create multiple print: '+c)
print('this is outside loop, create single print, get it: '+c)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM