Tôi đang cố gắng sử dụng Entrez để nhập dữ liệu xuất bản vào cơ sở dữ liệu. Phần tìm kiếm hoạt động tốt, nhưng khi tôi cố gắng phân tích:Sự cố với phân tích dữ liệu xuất bản từ PubMed với Entrez
from Bio import Entrez
def create_publication(pmid):
handle = Entrez.efetch("pubmed", id=pmid, retmode="xml")
records = Entrez.parse(handle)
item_data = records.next()
handle.close()
... Tôi nhận được lỗi sau:
File "/venv/lib/python2.7/site-packages/Bio/Entrez/Parser.py", line 296, in parse raise ValueError("The XML file does not represent a list. Please use Entrez.read instead of Entrez.parse") ValueError: The XML file does not represent a list. Please use Entrez.read instead of Entrez.parse
Mã này đã từng làm việc cho đến khi cách đây vài ngày. Bất kỳ ý tưởng gì có thể xảy ra ở đây?
Ngoài ra, nhìn vào mã nguồn (http://biopython.org/DIST/docs/api/Bio.Entrez-pysrc.html) và cố gắng làm theo tấm gương niêm yết, cung cấp cho các lỗi tương tự:
from Bio import Entrez
Entrez.email = "[email protected]"
handle = Entrez.efetch("pubmed", id="19304878,14630660", retmode="xml")
records = Entrez.parse(handle)
for record in records:
print(record['MedlineCitation']['Article']['ArticleTitle'])
handle.close()
Silly câu hỏi, nhưng bạn đã thử sử dụng 'Entrez.read()', và sau đó phân tích các kết quả? – MattDMo
read() hoạt động chủ yếu, nhưng có một loạt các mã khác xung quanh điều này. Vì vậy, khi tôi cố gắng, tôi chỉ tiếp tục nhận được các lỗi khác nhau. Vì vậy, hoặc là có một sửa chữa đơn giản cho phân tích cú pháp(), hoặc tôi cần phải viết lại phần còn lại. – apiljic
Điều này được sử dụng để làm việc cho đến ba ngày trước, nhưng có vẻ như một cái gì đó đã thay đổi ở PubMed gần đây, do đó, nó không thành công ngay bây giờ. – apiljic