Как прочитать строку, содержащую строку, затем извлечь эту строку без этой строки - PullRequest
0 голосов
/ 26 мая 2018

У меня есть файл .txt, содержащий определенную строку, например:

file.txt

.
.
T - Python and Matplotlib Essentials for Scientists and Engineers
.
A - Wood, M.A.
.
.
.

Я хотел бы извлечь строки, содержащие строку, я пытался спростой скрипт:

with open('file.txt','r') as f:
    for line in f:
        if "T - " in line:
            o_t = line.rstrip('\n')
        elif "A - " in line:
            o_a = line.rstrip('\n')


o_T = o_t.split('T - ')
print (o_T)

o_A = o_a.split('A - ')
#o_Fname =
#o_Lname =
print (o_A)

мой вывод:

['', 'Python and Matplotlib Essentials for Scientists and Engineers']
['', 'Wood, M.A.']

и мой желаемый вывод:

Python and Matplotlib Essentials for Scientists and Engineers
Wood, M.A.

более того, для второго ("Wood, MA")Могу ли я также извлечь фамилию и имя.Таким образом, окончательные результаты будут:

 Python and Matplotlib Essentials for Scientists and Engineers
 Wood
 M.A.

Ответы [ 2 ]

0 голосов
/ 26 мая 2018

Используйте filter для удаления всех пустых элементов из списка.

Пример:

o_T = filter(None, o_t.split('T - '))
print (o_T)
o_A = filter(None, o_a.split('A - '))
print (o_A)

Вывод:

['Python and Matplotlib Essentials for Scientists and Engineers']
['Wood, M.A.']
0 голосов
/ 26 мая 2018

Ошибка в вашем случае заключается в том, что вы печатаете o_t вместо o_T (что является результатом операции разделения).

Однако, как отмечали другие, вы также можете подойти к этому, удалив первые 4 символа,используя регулярное выражение \w - (.+), вы можете получить все значения.Если вам также нужен первый символ, вы можете использовать (\w) - (.+).

В дополнение к этому, если вы дадите своим переменным лучшие имена, у вас будет лучшая жизнь:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...