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