Используйте регулярные выражения для поиска строк с похожей структурой - PullRequest
0 голосов
/ 07 марта 2019

Я пытаюсь искать заголовки в файле bibtex и получать заголовки только в качестве вывода.

Например, когда я читаю текст bibtex построчно, это будут строки в списке:

['\tPages = {3221--52},\n',
 '\tTitle = {The slave trade and the origins of mistrust in Africa},\n',
 '\tVolume = {101},\n',
 '\tYear = {2011}}\n',
 '\n',
 '@article{perez2013regime,\n',
 "\tAuthor = {P{\\'e}rez-Li{\\~n}{\\'a}n, An{\\'\\i}bal and Mainwaring, Scott},\n",
 '\tDate-Added = {2019-03-06 15:28:11 -0800},\n',
 '\tDate-Modified = {2019-03-06 15:28:11 -0800},\n',
 '\tJournal = {Comparative Politics},\n',
 '\tNumber = {4},\n',
 '\tPages = {379--397},\n',
 '\tPublisher = {City University of New York},\n',
 '\tTitle = {Regime legacies and levels of democracy: evidence from Latin America},\n',
 '\tVolume = {45},\n']

Отсюда я бы хотел получить только названия:

The slave trade and the origins of mistrust in Africa
Regime legacies and levels of democracy: evidence from Latin America

Как я могу сделать это с regex?

Потенциально я хочу что-то вроде:

for line in lines:
    pattern = re.compile( regex here )
    result = pattern.search(line)
    if (result):
        print(result.group())

Я следовал за ответом ниже, но он не напечатает результаты:

string = '\tTitle = {Regime legacies and levels of democracy: evidence from Latin America},\n'
pattern = re.compile(r'^\\tTitle = \{(.*)\},\\n$')
result = pattern.match(string)
if (result):
    print(result.group(1))

Я не получил результатов, то есть совпадений не было?

1 Ответ

0 голосов
/ 07 марта 2019

попробуйте это:

^\\tTitle = \{(.*)\},\\n$

использовать поиск вместо поиска

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