У меня есть файл с именем ref.bib (txt-файл), содержащий список статей в формате BibTeX. Например, вот одна статья:
@article{campbell2020beyond,
title={Beyond zero trust: Trust is a vulnerability},
doi = {10.1109/MC.2020.3011081},
author={Campbell, Mark},
journal={Computer},
volume={53},
number={10},
pages={110--113},
year={2020},
publisher={IEEE}
}
Я хотел бы добавить DOI к каждой статье в файле с помощью поиска в Интернете. Результатом приведенного выше примера будет (ref.bib):
@article{campbell2020beyond,
title={Beyond zero trust: Trust is a vulnerability},
author={Campbell, Mark},
journal={Computer},
volume={53},
number={10},
pages={110--113},
year={2020},
publisher={IEEE},
DOI = {10.1109/MC.2020.3011081}
}
Как это можно сделать на Python? Есть ли способ изменить следующий код, чтобы улучшить поиск в Интернете?
import requests
import bibtexparser
from bibtexparser.bwriter import BibTexWriter
import sys
def search_doi(title, author):
"""Search for the DOI using the CrossRef API."""
query = f"{title} {author}"
url = f"https://api.crossref.org/works?query={query}"
response = requests.get(url)
if response.status_code == 200:
data = response.json()
items = data['message']['items']
if items:
return items[0]['DOI'] # Return the first DOI found
return None
def add_doi_to_bibtex(bibtex_file):
"""Add DOI to each entry in the BibTeX file."""
with open(bibtex_file) as f:
bibliography = bibtexparser.load(f)
for entry in bibliography.entries:
if 'doi' not in entry or entry['doi'].isspace():
title = entry.get('title', '')
author = entry.get('author', '')
doi = search_doi(title, author)
if doi:
entry['doi'] = doi
print(f"Added DOI {doi} to entry: {title}")
# Write the updated bibliography to a new file
writer = BibTexWriter()
with open(bibtex_file.replace('.bib', '_updated.bib'), 'w') as f:
f.write(writer.write(bibliography))
if __name__ == "__main__":
if len(sys.argv) != 2:
print("Usage: python add_doi.py ")
else:
add_doi_to_bibtex(sys.argv[1])
Подробнее здесь: https://stackoverflow.com/questions/792 ... rence-file
Автоматическое добавление DOI в справочный файл BibTex ⇐ Python
Программы на Python
-
Anonymous
1734023768
Anonymous
У меня есть файл с именем ref.bib (txt-файл), содержащий список статей в формате BibTeX. Например, вот одна статья:
@article{campbell2020beyond,
title={Beyond zero trust: Trust is a vulnerability},
doi = {10.1109/MC.2020.3011081},
author={Campbell, Mark},
journal={Computer},
volume={53},
number={10},
pages={110--113},
year={2020},
publisher={IEEE}
}
Я хотел бы добавить DOI к каждой статье в файле с помощью поиска в Интернете. Результатом приведенного выше примера будет (ref.bib):
@article{campbell2020beyond,
title={Beyond zero trust: Trust is a vulnerability},
author={Campbell, Mark},
journal={Computer},
volume={53},
number={10},
pages={110--113},
year={2020},
publisher={IEEE},
DOI = {10.1109/MC.2020.3011081}
}
Как это можно сделать на Python? Есть ли способ изменить следующий код, чтобы улучшить поиск в Интернете?
import requests
import bibtexparser
from bibtexparser.bwriter import BibTexWriter
import sys
def search_doi(title, author):
"""Search for the DOI using the CrossRef API."""
query = f"{title} {author}"
url = f"https://api.crossref.org/works?query={query}"
response = requests.get(url)
if response.status_code == 200:
data = response.json()
items = data['message']['items']
if items:
return items[0]['DOI'] # Return the first DOI found
return None
def add_doi_to_bibtex(bibtex_file):
"""Add DOI to each entry in the BibTeX file."""
with open(bibtex_file) as f:
bibliography = bibtexparser.load(f)
for entry in bibliography.entries:
if 'doi' not in entry or entry['doi'].isspace():
title = entry.get('title', '')
author = entry.get('author', '')
doi = search_doi(title, author)
if doi:
entry['doi'] = doi
print(f"Added DOI {doi} to entry: {title}")
# Write the updated bibliography to a new file
writer = BibTexWriter()
with open(bibtex_file.replace('.bib', '_updated.bib'), 'w') as f:
f.write(writer.write(bibliography))
if __name__ == "__main__":
if len(sys.argv) != 2:
print("Usage: python add_doi.py ")
else:
add_doi_to_bibtex(sys.argv[1])
Подробнее здесь: [url]https://stackoverflow.com/questions/79276006/adding-doi-automatically-to-bibtex-reference-file[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия