gpt4 book ai didi

regex - 崇高文字立即将多个重音字符替换为无重音字符

转载 作者:行者123 更新时间:2023-12-02 11:26:17 25 4
gpt4 key购买 nike

我需要在文本文件中用重音符号替换所有字符,即:

á é í ó ú ñ

对于它们的非重音符号:
a e i o u n

可以通过某个正则表达式命令一次为整个文件实现此功能吗?

更新(2017年2月1日)

我将 great answer替换为 Keith Hall,并变成了Sublime包。您可以在这里找到它: Remove​Non​Ascii​Chars

最佳答案

您可以使用以下正则表达式:

(?=\p{L})[^a-zA-Z]

寻找带有变音符号的字符。
  • (?=\p{L})正向前瞻,以确保下一个字符是Unicode字母
  • [^a-zA-Z]否定字符类,以排除不带变音符号的字母。

  • 这是必需的,因为Sublime Text(或者更具体地说,它用于“查找和替换”的 Boost regex engine)不支持 \p{M}。有关 \p元字符功能的更多信息,请参见 http://www.regular-expressions.info/unicode.html

    不幸的是,要进行替换,您将需要指定要手动替换的字符。更难的是,ST似乎不支持 POSIX character equivalents,也不支持 conditionals in the replacement,这允许您使用捕获组在一次通过中进行查找和替换。

    因此,您将需要使用多个查找表达式,例如:
    [ÀÁÂÃÄÅ]

    用。。。来代替
    A


    [àáâãäå]

    用。。。来代替
    a

    等等。

    这是很多手工工作。

    一种更简单/快捷/省力的方法是使用Python API而不是regex:
  • 工具菜单->开发人员->新插件
  • 粘贴在以下内容中:
    import sublime
    import sublime_plugin
    import unicodedata

    class RemoveNonAsciiCharsCommand(sublime_plugin.TextCommand):
    def run(self, edit):
    entire_view = sublime.Region(0, self.view.size())
    ascii_only = unicodedata.normalize('NFKD', self.view.substr(entire_view)).encode('ascii', 'ignore').decode('utf-8')
    self.view.replace(edit, entire_view, ascii_only)
  • 将其保存在ST建议的文件夹(这将是您的Packages/User文件夹)中,就像remove_non_ascii_chars.py(文件扩展名很重要,基本名称不重要)一样。
  • 查看菜单->显示控制台
  • 输入/粘贴view.run_command('remove_non_ascii_chars'),然后按Enter
  • 变音符号将被删除(带有重音符号的字符将被转换为非重音符号的字符)。

  • 注意:以上内容实际上也会删除所有非ASCII字符...

    进一步阅读:
  • http://fabzter.com/blog/remove-nonspacing-characters-text-python
  • What is the best way to remove accents in a Python unicode string?
  • 关于regex - 崇高文字立即将多个重音字符替换为无重音字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38909087/

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