1

DB に挿入する前に消去する必要があるデータがいくつかあります。各行は出版物を表し、一部の行は書式が異なります。唯一の類似点は、各レコードが同じ行にあることです。例えば。

5: Aghasadeghi MR, Salmani AS, Sadat SM, Javadi F, Memarnejadian A, Vahabpour R, Zabihollahi R, Moshiri A, Siadat SD. Application of outer membrane vesicle ofNeisseria meningitidis serogroup B as a new adjuvant to induce stronglyTh1-oriented responses against HIV-1. Curr HIV Res. 2011 Dec 1;9(8):630-5. PubMedPMID: 22211657.
6: Ramezani A; Banifazl M; Mohraz M; Rasoolinejad M; Aghakhani A; Occulthepatitis B virus infection: A major concern in HIV-infected patients: Occult HBVin HIV. Hepat Mon. 2011 Jan 1;11(1):7-10. PubMed PMID: 22087108; PubMed CentralPMCID: PMC3206662.
7: Roohvand, F., Kossari, N. Advances in hepatitis C virus vaccines, Part one:Advances in basic knowledge for hepatitis C virus vaccine design. Expert OpinTher Pat. 2011 Dec;21(12):1811-30. Epub 2011 Oct 25. Review. PubMed PMID:22022980.
8: Chinikar, S., Javadi, A., Ataei, B., Shakeri, H., Moradi, M., Mostafavi, E., Ghiasi, S.M.Detection of West Nile virus genome and specific antibodies in Iranianencephalitis patients. Epidemiol Infect. 2011 Oct 19:1-5. [Epub ahead of print]PubMed PMID: 22008154.

一部の著者はセミコロンで区切られ、他の著者はコンマで区切られていることがわかります。行 7 と 8 には、姓とミドルネームのイニシャルを区切るカンマがあります。すべての著者をグループ化し、著者フィールドに配置するか、独自の列に配置することもできます。これを行うためにこれらの著者を互いに分離する最良の方法は何でしょうか? これは簡単な作業ではありません;-)

4

1 に答える 1

4

いくつかの仮定を行う必要があるため、フォーマットが一貫していない場合、これは扱いにくいものになる可能性があります。このソリューションでは、人々の名前は 20 文字を超えず、役職は少なくとも 20 文字で、コンマ、セミコロン、またはピリオドを含まないことを前提としています。

以下は、最終的な作成者の後にタブを挿入するバージョンです:

result = ''
for line in text.split('\n'):
    result += re.sub(r'([^,;.]{20,}.*)', r'\t\1', line) + '\n'

そして、各本の著者のリストを取得する方法は次のとおりです。

authors = []
for line in text.split('\n'):
    names = re.split(r'\d+: |[^,;.]{20,}', line)[1]
    authors.append(re.findall(r'\w+,? [\w.]+', names))

結果:

>>> pprint.pprint(authors, width=200)
[['Aghasadeghi MR', 'Salmani AS', 'Sadat SM', 'Javadi F', 'Memarnejadian A', 'Vahabpour R', 'Zabihollahi R', 'Moshiri A', 'Siadat SD.'],
 ['Ramezani A', 'Banifazl M', 'Mohraz M', 'Rasoolinejad M', 'Aghakhani A'],
 ['Roohvand, F.', 'Kossari, N.'],
 ['Chinikar, S.', 'Javadi, A.', 'Ataei, B.', 'Shakeri, H.', 'Moradi, M.', 'Mostafavi, E.', 'Ghiasi, S.M.']]
于 2012-05-18T19:18:48.850 に答える