Как исправить код Python 3 для извлечения определенных строк из текстового файла

Если вы открыты для использования пакетов, plyr является очень популярным и имеет эту удобную функцию mapvalues ​​() , которая сделает именно то, что вы ищете:

foo <- mapvalues(foo, from=c("AA", "AC", "AG"), to=c("0101", "0102", "0103"))

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

0
задан brave_chart 28 March 2019 в 03:14
поделиться

3 ответа

Вы должны реализовать встроенный модуль csv, который входит в стандартную комплектацию Python. Он может легко разбирать каждую строку в списке. Попробуйте что-то вроде этого:

import csv

with open('text.txt', 'r') as file:
    my_reader = csv.reader(file, delimiter='|')
    for row in my_reader:
        if row[0] == 'C00501197':
            print(row)

Это должно вывести строки, которые вы хотите. Затем вы можете делать все, что хотите, чтобы обработать их и сохранить их снова.

0
ответ дан Reedinationer 28 March 2019 в 03:14
поделиться

Не используйте регулярные выражения, если вы можете избежать этого. csv - хороший выбор, или используйте простое манипулирование строками.

ans = []

with open('data.txt') as rf:
    for line in rf:
        line = line.strip()
        if line.startswith("C00501197"):
            ans.append(line)

with open('extracted_data.txt', 'w') as wf:
    for line in ans:
        wf.write(line)

Ваш выходной код также был немного сбит с толку - всегда записывал последнюю строку в файле, а не выбранные записи.

0
ответ дан dwagon 28 March 2019 в 03:14
поделиться

Вам не нужно проходить через регулярные выражения, просто разбейте строку на основе разделителя и проверьте интересующее вас n-е поле:

found_lines = []

with open("data.txt", 'r') as rf:
    for line_file in rf:
        line = line_file.split("|")
        if line[0] == "C00501197" :
            found_lines.append( line )

with open('extracted_data.txt','w') as wf:
    for found_line in found_lines :
        wf.write("|".join(map(str,found_line)))

Это должно сработать.

0
ответ дан cccnrc 28 March 2019 в 03:14
поделиться
Другие вопросы по тегам:

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