如何将所有6个字母的拉丁文单词提取到列表中?

时间:2009-02-22 13:51:36

标签: python regex data-mining

我需要在列表中包含所有6个字母Latin words

我还希望在列表中包含遵循Xyzzyx模式的单词。

我使用的是小Python。

2 个答案:

答案 0 :(得分:5)

正则表达式是你的朋友,我的朋友!这是家庭作业吗?

这是一个关闭到你想要的例子:

egrep "^\w{6}$" /usr/share/dict/words | egrep "(.)(.)(.)\3\2\1"

我会把它作为练习让读者创建一个拉丁文单词列表并处理第二个正则表达式中的大写X,但总体思路应该是显而易见的。

答案 1 :(得分:0)

请注意,除非您的列表包含所有名词的变体和动词的变形,否则您的程序将不会产生任何类似所有拉丁语中六个字母单词的内容。

例如,您的列表可能只包含名词的主格。名词长度为五个字母的第一变形名词(例如 mensa )具有六个字母的属格案例(例如 mensae )。所有的变形都包含名词的长度与其主格不同的情况。

对于动词来说更是如此,每个动词都具有(至少)四个主要部分,这些主要部分可以具有不同的长度,并且其结合也可以具有不同的长度。所以 lego 的第一人称单数现在时是长四个字母,但它的不定式 legere 是六个; porto 在第一人称单数中为五,但在第二人称单数中为六, portas

我认为原则上可以建立一个引擎,在给定关于每个单词的足够元信息的情况下,以编程方式拒绝和共轭拉丁词。 Python实际上是一种非常好的语言。但这比编写正则表达式要大得多。