Python将单个单词按字母顺序排序+列中相应的翻译

2024-03-28 19:35:04 发布

您现在位置:Python中文网/ 问答频道 /正文

所以,作为开场白,这是一个非常友好的剧本:

#!/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()

但是

我刚和我的讲师谈过,他告诉我他不想让我们使用

^{2}$

功能,因为它“太先进了,不能满足学生在这一点上的课程需求”。 我完全不知道我需要在“块”或“过程”字段中输入什么,到目前为止,我已经能够计算出大多数其他练习(有一些提示),但这一点远远超出了我的能力。这一部分值20分中的15分,这让我有点不舒服! 任何进一步的帮助将不胜感激。在


原文(抱歉,太长了!)在

我试着做到以下几点:我有一篇英语以外的语言的课文,用连字符分成语素(每个单词的一部分),有英文注释(每个语素的语言翻译)和下面的直接翻译。例如

Itali-am fat-o profug-us Lavini-a-que ven-it

Italy-Fem:Sg:Acc fate-Neut:Sg:Abl fleeing-Masc:Sg:Nom Lavinian-Neut:Pl:Acc come:Perf-3-Sg:Indic:Act

'in flight [driven] by fate came to Italy and the Lavinian [shores]'

我会在一个文件里放一些像上面这样的文本

blank line

a line of latin broken up with hyphens

a line of gloss broken up with corresponding hyphens, using colons to join elements

a line of translation

blank line

latin

gloss

translation

ad infinitum.

我需要做的是编写一个文件,该文件提供以下输出:

Itali:    1    Italy
am:    1    Fem:Sg:Acc
fat:    1    fate
o:    1    Neut:Sg:Abl
profug:   1    fleeing
us:    1    Masc:Sg:Nom
Lavini:    1    Lavinian
a:    1    Neug:Pl:Acc
que:    1    come:Perf
ven:    1   3
it:     1   Sg:Indic:Act

其中,第一列表示没有连字符的第一行文本;第二列表示出现的次数(在本例中每个只出现1次),第三列是第一列的英文翻译,如在文本中所写。在

如果有一个拉丁语素没有相应的英语注释/翻译,拉丁列将与正常一样,但英语列将打印[未知],如:

a:  1   [unknown]

如果相反,即英语语素没有对应的拉丁语,它应该打印出来

[unknown]:  1   kitten

最后,程序需要能够处理同音语素(即两个拼写相同、意义不同的拉丁语素)。e、 g

a:  16  Neuter:Plural
a:  28  Feminine:Singular

Tags: oftotransdefwithlinesgnext
1条回答
网友
1楼 · 发布于 2024-03-28 19:35:04

当你需要计算发生的次数时,你需要口述。在

创建一个字典,其中的键是由zip生成的元组,值是一个列表,它有:[latin,amount,translation]。每次遇到相同的元组时,都会增加数量。在

字典必须比函数长,因此您可能需要将其作为参数添加。在

完成后,可以执行以下操作:result=数字键(); 结果.排序(). 在

我不确定我是否理解未知的部分。如果这不能解决该部分,您可能需要展示一个相关的示例。在

相关问题 更多 >