Python Сравнить таблицы данных - PullRequest
0 голосов
/ 28 мая 2020

Я делаю проект, в котором мне нужно сравнить данные из python с данными из Excel или txt файла. Я попытаюсь объяснить лучше: я скопировал таблицу данных с веб-сайта (таблица данных с 7 строками и 1 столбцом), и мне нужно сравнить значения с файлом txt или excel. Этот файл txt или excel содержит таблицу данных с 3 значениями, которые существуют в таблице данных, извлеченных из Интернета (3 строки и 1 столбец).

Таблица данных, извлеченных из Интернета:

FT 202003/69362
FT 202003/62581
FT 202003/41307
FT 202003/32316
FT 202003/4664
FT 201903/215090
FT 201903/197043

Таблица данных в файле txt или файле Excel

FT 202003/62581
FT 202003/41307
FT 202003/32316

Мой код на данный момент:

faturas = driver.find_elements_by_xpath("//p[@class='text-description-small']//b[contains(text(),'FT')]")
    totalfaturas = len(faturas)
    fat_list = []
    for fat in faturas:
        fat_list.append(fat.text)
        print(fat.text)

Цель состоит в том, чтобы найти, какие значения из таблицы извлеченных из Интернета данных не существуют в таблице данных файла, потому что все значения из таблицы данных имеют связанную кнопку на этом веб-сайте, но я просто хочу нажать кнопку из значений, которых нет в файле txt или excel (эта часть, я думаю, я могу это сделать). Кто-нибудь может мне помочь?

1 Ответ

0 голосов
/ 28 мая 2020

Вы можете использовать даже in для проверки одного текста в другом тексте:

text_from_file = '''FT 202003/62581
FT 202003/41307
FT 202003/32316'''

fat_text = 'FT 202003/62581'

if fat_text in text_from_file:
    print('already in file')
else:
    print('new element')

То же самое, когда у вас будет текст из файла в виде списка элементов

list_from_file = [
    'FT 202003/62581',
    'FT 202003/41307',
    'FT 202003/32316',
]    

fat_text = 'FT 202003/62581'

if fat_text in list_from_file:
    print('already in file')
else:
    print('new element')

Для pandas.DataFrame вы можете использовать `

if any(df['items'] == fat_text):

Код:

import pandas as pd

df = pd.DataFrame({'items': [
    'FT 202003/62581',
    'FT 202003/41307',
    'FT 202003/32316',
]})

fat_text = 'FT 202003/62581'

if any(df['items'] == fat_text):
    print('already in file')
else:
    print('new element')

В конце концов вы можете использовать sum (), который конвертирует True в 1 и От False до 0

if sum(df['items'] == fat_text) > 0:

или отфильтруйте строки и проверьте, сколько строк вы получите

if len(df[ df['items'] == fat_text ]) > 0:
...