идентичные списки возвращают FALSE при попытке list1 == list2 - PullRequest
0 голосов
/ 24 июня 2019

Я создал некоторый код для определения конкретной даты в наборе данных.Однако, пытаясь сослаться на эту дату и сравнить ее с другими датами, которые содержат соответствующие данные, я не могу вернуть совпадение.Мне кажется странным, что приведенные ниже даты были бы списком, но type(xyz) возвращает class: 'list' ...

Поиск даты:

for item in soup.find('td', text='document period end date').parent.find_all('td', {'class':['text']}):
    if len(item.text.strip()) > 0:
        report_date = [item.text.strip()]
        print(report_date) # class: 'list'

возвращает:

['mar. 31,  2018']

Теперь давайте попробуем найти совпадение на эту дату.Вот код:

for filename in filenames:
    print('-----------------------------')
    i = 1
    for item in soup.select('filename:contains("' + filename + '")'):
        if filename in item.text.strip():
            for th in item.find_all('th', {'class':['th']}):
                headers = [th.text.strip()]
                print(headers) # class: 'list'
                if headers == report_date:
                    print('match')
                else:
                    print('no match')

возвращает:

['mar. 31, 2018']
no match
['sep. 30, 2017']
no match
['6 months ended']
no match
['mar. 31, 2018']
no match
['6 months ended']
no match
['mar. 31, 2018']
no match

попробуйте сборы. Counter ():

                if collections.Counter(headers) == collections.Counter(report_date):
                    print('match')
                else:
                    print('no match')

без кубиков:

['mar. 31, 2018']
no match
['sep. 30, 2017']
no match
['6 months ended']
no match
['mar. 31, 2018']
no match
['6 months ended']
no match
['mar. 31, 2018']
no match

Попробуйте .sort (), как показывают некоторые из приведенных ниже ссылок:

                if headers.sort() == report_date.sort():
                    print('match')
                else:
                    print('no match')

теперь все совпадает ..?:

['mar. 31, 2018']
match
['sep. 30, 2017']
match
['6 months ended']
match
['mar. 31, 2018']
match
['6 months ended']
match
['mar. 31, 2018']
match

Я не нашел подходящего или полезногоответьте на вопросы StackOverflow идентичную строку, возвращающую false или Python '==', неверно возвращающую false , ни в простом поиске Google по этой теме.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...