Я создал некоторый код для определения конкретной даты в наборе данных.Однако, пытаясь сослаться на эту дату и сравнить ее с другими датами, которые содержат соответствующие данные, я не могу вернуть совпадение.Мне кажется странным, что приведенные ниже даты были бы списком, но 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 по этой теме.