【问题标题】:Pybtex does not recogonize bibtex entryPybtex 无法识别 bibtex 条目
【发布时间】:2013-10-17 22:26:07
【问题描述】:

我正在创建一个出版物数据库,它允许用户输入 bibtex 条目,然后我对其进行解析并存储在数据库中。现在,我无法解析 bibtex 条目。我正在尝试使用 pybtex 进行解析。首先,我没有看到 pybtex 有一个 parse(input) 选项,只有一个 parse_file() 选项。这就是我目前正在做的事情:

def convert_to_modelform(bibtexb):
    parser = bibtex.Parser()
    f = open('/tmp/bibtex.bib', 'w')
    f.write(bibtexb)
    f.close
    bibdata = parser.parse_file('/tmp/bibtex.bib')
    print bibdata
    print len(bibdata.entries)
    return bibtexb

/tmp/bibtex.bib 有以下内容:

@article{article,
  author  = {Peter Adams},
  title   = {The title of the work},
  journal = {The name of the journal},
  year    = 1993,
  number  = 2,
  pages   = {201-213},
  month   = 7,
  note    = {An optional note},
  volume  = 4
}

打印 bibdata 和 print len(bibdata.entries) 给我:

BibliographyData(entries=OrderedCaseInsensitiveDict({}), preamble=[])
0

我在这里缺少什么?

【问题讨论】:

    标签: python-2.7 bibtex


    【解决方案1】:

    要从字符串中解析,请将 StringIO 与 parse_stream 结合使用:

    import pybtex.database.input.bibtex
    from StringIO import StringIO
    
    def bibtex_string_to_data(s):
        parser = pybtex.database.input.bibtex.Parser()
        return parser.parse_stream(StringIO(s))
    
    print bibtex_string_to_data("""
    @article{article,
      author  = {Peter Adams},
      title   = {The title of the work},
      journal = {The name of the journal},
      year    = 1993,
      number  = 2,
      pages   = {201-213},
      month   = 7,
      note    = {An optional note},
      volume  = 4
    }
    """)
    

    给出(重新格式化以提高可读性):

    BibliographyData(entries=OrderedCaseInsensitiveDict({
        'article': Entry(
            'article',
            fields={
                'volume': '4',
                'title': 'The title of the work',
                'journal': 'The name of the journal',
                'number': '2',
                'month': '7',
                'note': 'An optional note',
                'year': '1993',
                'pages': '201-213'},
            persons={
                'author': [Person(u'Adams, Peter')]})
        }), preamble=[])
    

    【讨论】:

      猜你喜欢
      • 2018-08-19
      • 1970-01-01
      • 2018-07-01
      • 2013-10-14
      • 1970-01-01
      • 2020-10-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多