@Anonim2022

Как вывести строку из csv файла без лишних символов на python?

Сейчас у меня есть код который по запросу ищет данные у файле и выводит целую строку(смотрите ниже):
import csv

def parse_input_data(data):
    return data.split(';')

def search_csv(file_path, search_data):
    matching_rows = []

    with open(file_path, 'r', newline='', encoding='utf-8') as csvfile:
        csv_reader = csv.reader(csvfile, delimiter=';')  # Установка разделителя ';'
        header = next(csv_reader)  # Пропускаем заголовок

        for row in csv_reader:
            if any(item.lower() in cell.lower() for cell in row for item in search_data):
                matching_rows.append(row)
    return matching_rows

# Пример использования:
file_path = 'krasna.csv'
user_input = input("Введите данные для поиска: ")
search_data = parse_input_data(user_input)
result = search_csv(file_path, search_data)
print (result)


Данные у файле выглядят так:
Телефон;Имя;Фамилия;Отчество;;
978196782;Віталій;Даниленко;Андрійович;;


Некоторые нюансы
Если что поиск по ФИО производится так что пользователь должен писать ФИО через точку-запятую(;). Если что это не мои прихоти, а на оборот наказание


Так вот мне нужно исправить что бы строка выводилась не вот так вот:
[['978196782', 'Віталій', 'Даниленко', 'Андрійович', '', '']]

А нормально без лишних символов
  • Вопрос задан
  • 371 просмотр
Решения вопроса 1
Mike_Ro
@Mike_Ro Куратор тега Python
Python, JS, WordPress, SEO, Bots, Adversting
import csv

def get_search_terms():
    return input("Вводи данные пёс, и разделить не забудь ';': ").split(';')

def find_matches_in_csv(file_name, search_terms):
    found_entries = []

    with open(file_name, 'r', encoding='utf-8') as csv_file:
        reader = csv.reader(csv_file, delimiter=';')
        
        next(reader)
        
        for row in reader:
            if any(term.lower() in entry.lower() for entry in row for term in search_terms):
                formatted_row = '; '.join([x for x in row if x])
                found_entries.append(formatted_row)
    
    return found_entries

if __name__ == "__main__":
    FILE_PATH = 'krasna.csv'
    terms_to_search = get_search_terms()
    
    matching_entries = find_matches_in_csv(FILE_PATH, terms_to_search)
    
    if matching_entries:
        for entry in matching_entries:
            print(entry)
    else:
        print("Не найдено")

Результат:
978196782; Віталій; Даниленко; Андрійович
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Maksim_64
@Maksim_64
Data Analyst
Ну если оставить всю твою логику, то можно просто отфильтровать, пустые строки из результатов которые он находит.
matching_rows.append([x for x in row if x])
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы