python - 使用 Python 在数据库中保存带有西班牙口音的记录
问题描述
我需要清除西班牙语的数据库,但要求是我必须保留重音标记。
例如,如果数据库包含“Administración”和“Administracion”,我必须将它们标识为相等,但保留带有重音符号的那个。经过一些研究,每一种解决方案,比如将 Unicode 转换为 ASCII 或使用 PyEnchant,都会保留一个没有重音标记的解决方案。
是否有任何库(对于 Python 3.5)或方法来确定正确的库并保留它?
解决方案
注意事项
根据数据库的内容,这很可能是一项不平凡的任务,因为尽管可能存在拼写错误:
- *
administracion
administración
西班牙语中也有许多词对,它们只是口音不同,但都是有效词:
ejército
ejercito
ejercitó
|tu
tú
如果你只考虑名词,这个数字会减少很多,主要是不同重音的外来词:
beisbol
béisbol
和一些母语的多种拼写:
período
periodo
|reúma
reuma
询问
如果您不太可能遇到这种情况,您可以使用如下方式的 sql 查询:
SELECT a.word AS "Good word", b.word AS "Bad word"
FROM spanish_db AS a
JOIN spanish_db AS b
--Spanish words have at most one accent so can safely nest REPLACE
ON REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(a.word, "á", "a"),
"é", "e"),
"í", "i"),
"ó", "o"),
"u", "u") = b.word
--So as not to match identical words
AND a.word != b.word
这将返回所有出现重音和非重音形式的单词对。您可以根据需要调整它以编辑/删除/清理条目。
例子
Good word Bad word
"acedía" "acedia"
"aeróbic" "aerobic"
"aeróstato" "aerostato"
"afrodisíaco" "afrodisiaco"
"alcalá" "alcala"
"alvéolo" "alveolo"
"alérgeno" "alergeno"
"amoníaco" "amoniaco"
"anémona" "anemona"
"arcén" "arcen"
推荐阅读
- android - 通过在边缘外单击来调整窗口大小时如何拦截所有触摸事件
- msbuild - 如何让 TFS Build 2015 Default Process Template 从 Visual Studio 2017 指向 MSBuild?
- php - 在 php wordpress 中创建退订按钮
- android - 如何在android中动态添加和删除不同的viewholders(比如2个viewholders)?
- javascript - Using debounce in rxjs client side webapp
- javascript - Responsive JavaScript with text replacing
- java - Passing data to Tensorflow model in Java
- facebook-graph-api - Posts likes 适用于 Graph API Explorer 但在服务器上返回空数组
- android - 从服务器(EditText)接收文本后如何保留 Linebrakes
- selenium - 如何通过 Selenium 在 iframe 中检索 html