我有一个科学名称(属、种、种下名称)的列表,分为几行
Synonyms are shown in italics
Solanaceae
Solenomelus Miers
biflorus (Thunb.) Baker
Spirodela Schleiden
punctata (C. A. Meyer) C.
Thompson
Suaeda Forskal ex Scop.
argentinensis Soriano
fruticosa auct., non Forskal
patagonica Speg.
var. crassiuscula Soriano
Symphyostemon Miers ex Lindley
biflorus (Thunb.) Dusén
...
我想在一行中附上每个物种、种下(如果适用)和作者姓名以及各自的属
请注意:
-generas以大写字母开头,后跟作者姓名,作者姓名也以大写字母或(
开头。
-种类用小写字母表示。
-以下特定名称以var.
或ssp.
开头。
-一个不以eae
结尾的单词是作者名
到目前为止,我的代码如下:
from regex import search
genus_re = r'^[A-Z][a-z]+\s*[(A-Z]'
species_re = r'^[a-z]+\s*(?:[(A-Z]|(?:auct|var|ssp)\.)'
infsp_re = r'^(?:var|ssp)\..+'
author_nl_re = r'^[A-Z][a-z]+(?<!eae)$'
species_ls = []
flag = 0
with open('species_index.txt', 'r') as f:
lines = f.read().splitlines()
for line in lines:
find_genus = search(genus_re, line)
if find_genus:
tmp_genus = []
genus = search(r'^[A-Z][^A-Z\s]+', line)[0]
tmp_genus.append(genus)
if search(species_re, line):
sp = search('.+', line)[0]
species_ls.append(tmp_genus[0] + ' ' + sp)
我设法将物种名称附加到它们各自的属中,但我觉得我把事情复杂化了,并且很难附加独立的作者和超特定的名称
预期产出为:
Solenomelus biflorus (Thunb.) Baker
Spirodela punctata (C. A. Meyer) C. Thompson
Suaeda argentinensis Soriano
Suaeda fruticosa auct., non Forskal
Suaeda patagonica var. crassiuscula Soriano
Symphyostemon biflorus (Thunb.) Dusén
这是我解决你问题的脚本。这有点乱,但希望能有所帮助
输入:
输出
相关问题 更多 >
编程相关推荐