Конечно! Чтобы модифицировать данный код для поиска по нескольким CSV-файлам, нам нужно будет немного изменять логику. Мы будем принимать список файлов и выполнить поиск по каждому из них.
Вот возможная версия кода, которая реализует эту функциональность:
```python
import csv
def get_search_terms():
return input("Вводи данные, разделенные символом ';': ").split(';')
def find_matches_in_csv(files, search_terms):
found_entries = []
for file_name in files:
try:
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.strip().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((file_name, formatted_row)) # Сохраняем имя файла вместе с данными
except FileNotFoundError:
print(f"Файл {file_name} не найден. Пропуск.")
except Exception as e:
print(f"Произошла ошибка при обработке файла {file_name}: {e}")
return found_entries
def main():
# Вводим файлы в формате: файл1.csv;файл2.csv;файл3.csv
files = input("Введите список файлов, разделенных ';': ").split(';')
search_terms = get_search_terms()
matches = find_matches_in_csv(files, search_terms)
if matches:
print("Найденные совпадения:")
for file_name, entry in matches:
print(f"Файл: {file_name}, Запись: {entry}")
else:
print("Совпадений не найдено.")
if __name__ == '__main__':
main()
```
### Разъяснение изменений:
1. **Импорт модуля `csv`**: Сначала убедитесь, что вы импортировали модуль `csv`, если вы еще не сделали этого.
2. **Множественный файл в `find_matches_in_csv`**: Функция теперь принимает список файлов и итерируется по каждому файлу.
3. **Ошибка файла**: Добавлено обработка исключений на случай, если файл не найден или возникла другая ошибка при его обработке.
4. **Формирование результата**: Теперь найденные записи также содержат название файла, из которого они были извлечены, что делает вывод более информативным.
5. **Основная функция**: Ввод файлов теперь осуществляется через `input`, и строки разделяются по символу `;`, точно так же, как и для поисковых терминов.
Теперь код может искать по нескольким CSV-файлам и отображать все найденные совпадения.