как прочитать 2 файла, сопоставить 2 столбца и выбрать соответствующее значение из первого файла, а затем найти это значение в списке столбцов

Вопрос или проблема

Мне нужно сопоставить элементы из file1 и file2.
Элемент 3456 соответствует из file1 и file2, и мне нужно получить соответствующее количество 123 из file1 и найти это значение во всех столбцах file2.. это может быть в любом случайном столбце file2

Файл1:

123,3456,BSA
345,546,BNA
234,789,SBA

Файл2:

1,3456,N,,,150,275,111,6,113,3,196,0,246,4,312,3,319,0,367,0,402,11,406,7,410,3,440,3,536,0,554,13,564,38,567,9,583,0,584,5,591,0,637,0,123,5,770,0,866,0,931,25,932,0,976,0,1047,8,1067,7,1103,1120,1126,0,1127,9,1136,9
1,789,N,,,150,275,111,6,113,3,196,0,246,4,312,3,319,0,367,0,234,11,406,7,410,3,440,3,536,0,554,13,564,38,567,9,583,0,584,5,591,0,637,0,123,5,770,0,866,0,931,25,932,0,976,0,1047,8,1067,7,1103,1120,1126,0,1127,9,1136,9

если соответствующее количество 123 найдено, мне нужно напечатать количество в следующем столбце, т.е. 5, и добавить 12 в тот же столбец..

так что вывод должен быть строками из file2 с обновленным количеством, выделенным

Вывод:

1,3456,N,,,150,275,111,6,113,3,196,0,246,4,312,3,319,0,367,0,402,11,406,7,410,3,440,3,536,0,554,13,564,38,567,9,583,0,584,5,591,0,637,0,123,**27(5+12)**,770,0,866,0,931,25,932,0,976,0,1047,8,1067,7,1103,1120,1126,0,1127,9,1136,9
1,789,N,,,150,275,111,6,113,3,196,0,246,4,312,3,319,0,367,0,234,**23(11+12)**,406,7,410,3,440,3,536,0,554,13,564,38,567,9,583,0,584,5,591,0,637,0,123,5,770,0,866,0,931,25,932,0,976,0,1047,8,1067,7,1103,1120,1126,0,1127,9,1136,9

Ответ или решение

Конечно! Давайте разберемся с задачей, которую вы описали, и создадим решение для сопоставления данных из двух файлов, извлечения значений и их обновления. Я представлю решение на Python, так как данный язык программирования идеально подходит для обработки и манипуляций с файлами.

Задача: Сопоставление и обновление значений из двух файлов

Описание проблемы

Мы имеем два файла:

  • File1: Содержит идентификаторы товара и их соответствующее количество.
  • File2: Содержит несколько строк с различными данными, среди которых есть количество, которое нужно обновить, при выполнении определенных условий.

Пример файлов:

File1:

123,3456,BSA
345,546,BNA
234,789,SBA

File2:

1,3456,N,,,150,275,111,6,113,3,196,0,246,4,312,3,319,0,367,0,402,11,406,7,410,3,440,3,536,0,554,13,564,38,567,9,583,0,584,5,591,0,637,0,123,5,770,0,866,0,931,25,932,0,976,0,1047,8,1067,7,1103,1120,1126,0,1127,9,1136,9
1,789,N,,,150,275,111,6,113,3,196,0,246,4,312,3,319,0,367,0,234,11,406,7,410,3,440,3,536,0,554,13,564,38,567,9,583,0,584,5,591,0,637,0,123,5,770,0,866,0,931,25,932,0,976,0,1047,8,1067,7,1103,1120,1126,0,1127,9,1136,9

Цели

  1. Найти соответствующее количество товара из File1 в строках File2, используя идентификатор (например, "3456").
  2. Обновить это значение, добавив к нему 12.
  3. Вывести строки File2, указав обновленные количества.

Решение

Шаг 1: Чтение файлов

Для начала нужно прочитать оба файла и сохранить данные в удобном формате.

# Функция для чтения содержимого файла и возвращения его как список строк
def read_file(file_path):
    with open(file_path, 'r') as file:
        return file.readlines()

# Чтение файлов
file1_lines = read_file('file1.txt')
file2_lines = read_file('file2.txt')

Шаг 2: Обработка данных

Создадим словарь для File1, в котором ключом будет идентификатор товара, а значением — его количество.

# Создаем словарь для товаров из File1
product_dict = {}
for line in file1_lines:
    quantity, product_id, _ = line.strip().split(',')
    product_dict[product_id] = int(quantity)  # Сохраняем количество как целое число

Шаг 3: Изменение значений в File2

Теперь мы будем проходить по строкам из File2, искать соответствия и обновлять значения.

updated_lines = []

for line in file2_lines:
    columns = line.strip().split(',')
    product_id = columns[1]  # Берем второй столбец как идентификатор товара

    if product_id in product_dict:
        quantity_to_find = product_dict[product_id]  # Получаем количество из File1

        # Ищем количество в столбцах File2
        for i in range(len(columns)):
            if columns[i].isdigit() and int(columns[i]) == quantity_to_find:
                updated_quantity = int(columns[i]) + 12  # Добавляем 12 к найденному количеству
                # Обновляем значение и добавляем к строке выделение
                columns[i] = f"{updated_quantity}(**{updated_quantity - 12}+12**)"

    # Добавляем обновленную строку в список
    updated_lines.append(','.join(columns))

Шаг 4: Вывод результата

В конце мы можем вывести обновленные строки.

# Вывод обновленных строк
for updated_line in updated_lines:
    print(updated_line)

Заключение

Таким образом, описанный алгоритм позволяет эффективно сопоставлять данные из двух файлов, обновлять значения количеств и выводить результаты в удобном виде. Это решение можно легко адаптировать для работы с различными форматами файлов и объемами данных.

В случае необходимости дальнейших уточнений или помощи вы всегда можете обратиться.

Оцените материал
Добавить комментарий

Капча загружается...