Python不能识别两个相等的字符串

2024-10-03 09:10:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我对python中的字符串有一个奇怪的问题。我有两个列表,我必须在两个字符串中找到相同的名称。第二个列表是之前打开的文件中的readline()。 这是我的代码:

import requests
import sys
from bs4 import BeautifulSoup as bs
from urllib.request import urlopen

###VARIABILI###


###FUNZIONI###

def get_mysellers():
   s = open("sellers.txt" , 'r')
   sellers = []
   for line in s:
      sellers.append(line)
   return sellers
   

def get_onlinesellers():
   online_sellers = []
   table_body = soup.findAll('span', {"class": "d-flex has-content-centered mr-1"}) #questa è la tabella contenente la lista dei venditori con annesse informazioni
   i = 0
   for child in table_body:
      #print(child.string)
      online_sellers.append(child.string)
      i = i + 1
   
   return online_sellers
   

def list_of_choosen(selleronline, sellercheck ):
   
   choosen = []
   print(range(len(sellercheck)))
   for i in range(len(selleronline)):
      for j in range(len(sellercheck)):
         if(selleronline[i] == sellercheck[j]):
            choosen.append(sellercheck[j])
   return choosen



###MAIN###

      

page = urlopen("https://www.cardmarket.com/it/YuGiOh/Products/Singles/Chaos-Impact/Draco-Berserker-of-the-Tenyi")
soup = bs(page, 'html.parser')

online_sellers = get_onlinesellers()
sellers = get_mysellers()
chosen = list_of_choosen(online_sellers, sellers)
print(chosen)

卖家是这样的['L-Air1993\n','prova\n','CardsellerVienna\n','Terryloth\n']。我认为问题是“\n”,但如果我在sellers中打印单个元素,则获得的名称没有“\n”

多谢各位


Tags: ofinimportchildforgetreturndef
2条回答

当您打印“L-Air1993\n”时,它看起来就像只有名称一样。换行符只是在末尾添加了一个换行符,但很难看到后面是否有任何内容

要从列表中删除所有新行,请尝试以下操作:

sellers_no_newlines = [x.strip() for x in sellers]

然后将在线卖家列表与卖家无新行进行比较。希望这能解决你的问题

可以使用函数get\u mysellers中的方法strip从字符串中删除“\n”

def get_mysellers():
   s = open("sellers.txt" , 'r')
   sellers = []
   for line in s:
      Line=line.strip('\n')
      sellers.append(Line)

相关问题 更多 >