检测单词中的重音(Python)

2024-10-01 13:38:57 发布

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

我写了一个程序,可以在字典中找到所有的算法类。然而,我在处理重音字符时遇到了一个问题。目前,我的代码读入它们,将它们视为不可见的,但最后仍以'\xc3\???'的形式打印出某种替换代码。我想去掉所有带重音的单词,但我不知道如何识别它们。在

我尝试过的事情:

  • 正在检查类型是否为unicode
  • 使用正则表达式检查包含“\xc3”的单词
  • 解码/编码(我不完全理解unicode,但我尝试的任何方法都不起作用)。在

问题/问题:我需要找出如何检测重音符号,但我的程序将重音符号打印到命令行上,并显示为奇怪的'\xc3\???'字符,这不是程序处理它们的方式,因为我找不到任何包含“\xc3\??”的单词尽管打印到命令行。在

示例:sé->;s\xc3\xa9,而sé和s被我的程序视为anagram。在

测试字典:

stop
tops
pots
hello
world
pit
tip
\xc3\xa9
sé
s
se

代码输出:

^{pr2}$

程序本身:

import re

anadict = {};

for line in open('fakedic.txt'):#/usr/share/dict/words'):
        word = line.strip().lower().replace("'", "")
        line = ''.join(sorted(ch for ch in word if word if ch.isalnum($
        if isinstance(word, unicode):
                print word
                print "UNICODE!"
        pattern = re.compile(r'xc3')
        if pattern.findall(word):
               print 'Found'
               print word
        if anadict.has_key(line):
                if not (word in anadict[line]):
                        anadict[line].append(word)
        else:
                anadict[line] = [word]

for key in anadict:
        if (len(anadict[key]) >= 1):
                print anadict[key]

帮忙吗?在


Tags: key代码in程序forif字典line
2条回答

所以基本上我的答案是。。。看看这里:

How to check if a string in Python is in ASCII?

要点是,您可以检查每个字符,看看字符的ord是否小于128,这允许您检查它是否是重音字符。或者你可以做很多尝试和捕捉,寻找unicode错误,这些错误将在重音字符期间抛出。(后者似乎是更有效的答案)

对我来说,这绝对是一次学习的经历:)很抱歉花了这么长时间

最后,我使用正则表达式(基本上是为了检查所有非字母字符的内容):

if re.match('^[a-zA-Z_]+$', word):

这帮我去掉了任何有\或其他数字或怪异符号的单词。不是一个完美的解决方案,但它奏效了。在

相关问题 更多 >