1
2
3
4
5
6
7
8
9
10
11 from __future__ import print_function
12 import re,urllib
13 import QueryParams
14
15
17 """
18
19 >>> txt = "123 567 90 123\\n456 89\\n"
20 >>> print FillParagraph(txt,width=10)
21 123 567 90
22 123 456 89
23
24 >>> print FillParagraph(txt,width=10,indentLinesBy=3)
25 123 567 90
26 123 456
27 89
28 >>> txt = '123 567 \\n'
29 >>> print FillParagraph(txt,width=10)
30 123 567
31
32 """
33 expr = re.compile('[\ \t\n\r]+')
34 words = expr.split(text)
35 res = []
36 line = ''
37 for word in words:
38 if word:
39 if len(line)+len(word)>=width:
40 res.append(line)
41 line = ' '*indentLinesBy
42 line += word
43 else:
44 if line:
45 line += ' %s'%word
46 else:
47 line = word
48 if line:
49 res.append(line)
50 return '\n'.join(res)
51
53 """ Exports a sequence of JournalArticleRecords to a Medline text
54 format (not XML) that can be imported by EndNote
55
56 """
57 res = []
58 for i in range(len(records)):
59 rec = records[i]
60 res.append('UI - %d'%i)
61 res.append('PMID- %s'%rec.PubMedId)
62 for auth in rec.authors:
63 res.append('AU - %s %s'%(auth[0],auth[2]))
64 res.append('TI - %s'%FillParagraph(rec.Title,indentLinesBy=6))
65 res.append('TA - %s'%rec.Source)
66 res.append('DP - %s'%rec.PubYear)
67 res.append('PG - %s'%rec.Pages)
68 res.append('VI - %s'%rec.Volume)
69 res.append('IP - %s'%rec.Issue)
70 res.append('AB - %s'%FillParagraph(rec.Abstract,indentLinesBy=6))
71
72 for keyword in rec.keywords:
73 res.append('MH - %s'%(keyword))
74
75 return '\n'.join(res)
76
77
78
80 queryParams = {'CMD':'search',
81 'DB':db,
82 'term':term}
83 url = '%s?%s'%(QueryParams.queryBase,
84 urllib.urlencode(queryParams))
85 return url
86
87
88
89
90
91
92
94 import doctest,sys
95 return doctest.testmod(sys.modules["__main__"])
96
97 if __name__ == '__main__':
98 import sys,os.path
99 failed,tried = _test()
100 sys.exit(failed)
101
102 import Searches
103 recs = Searches.GetRecords(['11960484','10893315'],
104 conn=open('test_data/records.xml','r'))
105 res = RecordsToPubmedText(recs)
106 print(res)
107