Выражение совпадает, но Python все равно возвращает неверный вывод

#python #python-requests

Вопрос:

Я проверяю строку по селектору. Селектор действительно соответствует строке , но Python все равно возвращает False , почему?

Вот мой код:

 import requests
from scrapy.selector import Selector

url = 'https://www.pickles.com.au/cars/item/-/details/CP-09-16--Built-06-16--Holden--Colorado--RG-MY16-LS-Crew-Cab--Cab-Chassis-Dual-Cab--5-Seats--4-Doors/302151687'

r = requests.get(url)
rsp = Selector(text=r.text)

current_status = rsp.xpath('//h6[@class="mt-2"]/text()[2]').get()
print(current_status)
print('This item has been sold.' == current_status)
 

Выход:

 This item has been sold. 
False
 

Комментарии:

1. Распечатайте repr() строку, чтобы вы могли точно видеть, что она содержит — может быть непечатаемый символ, может быть пробел в конце и т. Д.

2. Что repr(current_status) выводит? Эти две строки явно, но, возможно, не очевидно , различны.

3. Да, теперь все в порядке.

4. Там тоже было свободное место.

Ответ №1:

У вас есть дополнительное место в конце current_status . Используйте rstrip , чтобы удалить его при условии.

Это можно увидеть в приведенном ниже коде, который я мог бы воссоздать и разрешить:

 import requests
from scrapy.selector import Selector
url = 'https://www.pickles.com.au/cars/item/-/details/CP-09-16--Built-06-16--Holden--Colorado--RG-MY16-LS-Crew-Cab--Cab-Chassis-Dual-Cab--5-Seats--4-Doors/302151687'

r = requests.get(url)
rsp = Selector(text=r.text)

current_status = rsp.xpath('//h6[@class="mt-2"]/text()[2]').get()
print(current_status)
print('This item has been sold.' == current_status.rstrip())