gpt4 book ai didi

python - 如何使用正则表达式 Python 在文件中查找非 ASCII 字符

转载 作者:行者123 更新时间:2023-12-05 07:58:36 25 4
gpt4 key购买 nike

我有一串字符,包括 [a-z] 以及 á,ü,ó,ñ,å,... 等等。目前,我正在使用正则表达式来获取包含这些字符的文件中的每一行。

spanishList.txt 示例:

adan
celular
tomás
justo
tom
átomo
camara
rosa
avion

Python 代码(charactersToSearch 来自 flask @application.route('/<charactersToSearch>')):

print (charactersToSearch)
#'átdsmjfnueó'
...
#encode
charactersToSearch = charactersToSearch.encode('utf-8')
query = re.compile('[' + charactersToSearch + ']{2,}$', re.UNICODE).match
words = set(word.rstrip('\n') for word in open('spanishList.txt') if query(word))
...

当我这样做时,我期望在文本文件中得到包含 charactersToSearch 中的字符的单词.它非常适合没有特殊字符的单词:

...
#after doing further searching for other conditions, return list of found words.
return '<br />'.join(sorted(set(word for (word, path) in solve())))
>>> adan
>>> justo
>>> tom

唯一的问题是它会忽略文件中所有非 ASCII 的单词。我也应该得到 tomásátomo .

我尝试过使用 ur'[...] 编码 UTF-8,但我无法让它适用于所有字符。文件和程序 ( # -*- coding: utf-8 -*- ) 也是 utf-8。

最佳答案

不同的策略

我不确定如何在您当前的工作流程中修复它,所以我会建议一条不同的路线。

此正则表达式将匹配既不是空白字符也不是扩展 ASCII 范围内的字母的字符,例如 Aé。换句话说,如果您的某个单词包含不属于该集合的奇怪字符,则正则表达式将匹配。

(?i)(?!(?![×Þß÷þø])[a-zÀ-ÿ])\S

当然这也会匹配标点符号,但我假设我们只查看未标点列表中的单词。否则,排除标点符号并不难。

在我看来,您的挑战是定义您的集合。

在 Python 中,你可以这样做:

if re.search(r"(?i)(?!(?![×Þß÷þø])[a-zÀ-ÿ])\S", subject):
# Successful match
else:
# Match attempt failed

关于python - 如何使用正则表达式 Python 在文件中查找非 ASCII 字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24400630/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com