这是作为初学者非常友好地提供给我的脚本:
#!/usr/bin/python
# -*- coding: utf-8 -*-
from __future__ import with_statement # needed for Python 2.5
from itertools import chain
def chunk(s):
"""Split a string on whitespace or hyphens"""
return chain(*(c.split("-") for c in s.split()))
def process(latin, gloss, trans):
chunks = zip(chunk(latin), chunk(gloss))
# now you have to DO SOMETHING with the chunks!
def main():
with open("examples.txt") as inf:
try:
while True:
latin = inf.next().strip()
gloss = inf.next().strip()
trans = inf.next().strip()
process(latin, gloss, trans)
inf.next() # skip blank line
except StopIteration:
# reached end of file
pass
if __name__=="__main__":
main()
我不确定我是否遗漏了任何东西,但输出只是空白,让我回到 $.
我正在尝试执行以下操作:
我有一个非英语语言的文本,使用连字符分解成语素(每个单词的一部分),带有英语光泽(每个语素的语言翻译)和下面的直接翻译。
例如。
Itali-am fat-o profug-us Lavini-a-que ven-it
意大利-Fem:Sg:Acc 命运-Neut:Sg:Abl 逃亡-Masc:Sg:Nom Lavinian-Neut:Pl:Acc come:Perf-3-Sg:Indic:Act
“在飞行中[驱使]命运来到意大利和拉维尼亚[海岸]”
我将在一个文件中包含多个文本,例如上述文本 - 即
空行
一行用连字符分隔的拉丁文
一条用相应连字符分解的光泽线,使用冒号连接元素
一行翻译
空行
拉丁
光泽度
翻译
无止境。
我需要做的是编写一个文件,它给我以下输出:
意大利语:1 意大利 上午:1 Fem:Sg:Acc 脂肪:1 命运 o: 1 中性:Sg:Abl profug: 1 逃离 我们:1 Masc:Sg:Nom 拉维尼:1个拉维尼 a: 1 Neug:Pl:Acc que: 1 来:Perf 文:1 3 它:1 Sg:Indic:Act
其中第一列表示没有连字符的第一行文本;第二列表示出现的次数(在本例中每个只有 1 次),第三列是第一列的英文翻译,如文中所写。
如果有一个拉丁语素没有对应的英语注释/翻译,拉丁栏将照常显示,但英语栏将打印 [unknown],如:
a: 1 [unknown]
如果相反,即没有对应拉丁语的英语语素,它应该打印
[unknown]: 1 kitten
最后,prog 需要能够处理同音词素(即两个拼写相同但含义不同的拉丁语素)。例如
a: 16 Neuter:Plural
a: 28 Feminine:Singular
再次,这是家庭作业,任何指针都会很棒。现在正在整理一些脚本以上传到这里以供批评!