脚本

脚本

我正在尝试找出一种方法,在 Notepad++ 中自动搜索并替换所有特殊/重音字母/字符(例如Â/ Ô)为等效的常规字母/字符(A/ )。O

尝试使用 ToolFx,但没有作用。

答案1

上面的建议非常好,但目前由于 Notepad++ 和“Notepad++ Python Script”之间的问题,它无法正常工作。几个月以来,Notepad++ 插件管理器会下载一个旧的 Python Script 版本,该版本无法与编辑器一起使用。要解决此问题:

  1. 退出 Notepad++
  2. 下载SourceForge 的兼容版本
  3. 双击运行下载的安装程序。在较新的 Windows 上,它会要求切换到管理员权限。
  4. 确保在安装过程开始时选择正确的安装驱动器。它无法正确检测 Notepad++ 安装盘。我不得不重新安装它,因为默认情况下它安装在 C:\ 上,即使 Notepad++ 在另一个磁盘上。
  5. 按照向导的说明进行操作。
  6. 安装过程完成后,(重新)启动 Notepad++。现在打开插件菜单。您应该会看到其中有一个新的“Python 脚本”项。如果出现,则说明您已强制安装了正确的版本。您也可以通过打开插件管理器、转到“已安装”选项卡并查找显示 Python 插件版本 1.0.8(此时)的条目来进行仔细检查。
  7. 您几乎已经完成了。转到插件 => Python 脚本 => 显示控制台菜单。Notepad++ 底部将出现一个窗格。它必须显示如下提示:

    Python 2.7.6-notepad++ r2 (default, Apr 21 2014, 19:26:54) [MSC v.1600 32 bit (Intel)]
    Initialisation took 156ms
    Ready.
    

各种版本号截至今天为止都是最新的,当然它们会随着时间的推移而改变。如果底部窗格显示异常,表明发生了异常或(并且)它保持空白,则说明您安装了错误的 Python 插件版本。

现在,让我们以正确的方式应用脚本:

  1. 打开两个新的空白标签/文件。
  2. 首先粘贴带重音符号的文本。
  3. 右键单击第二个选项卡并选择“移至其他视图”菜单。 Notepad++ 窗口将拆分。
  4. 按照上述说明打开 Python 脚本控制台(插件 => Python 脚本 => 显示控制台菜单)。
  5. 转到 Python 窗格底部的控制台行,其开头有一个“>>>”标记。
  6. 键入:from Npp import *然后按 Enter(从现在开始假设您始终在命令末尾按 Enter)。
  7. import unicodedata在同样的输入文本中输入: 。
  8. 单击(选择)包含重音文本的选项卡(这个很重要!)。
  9. 在 Python 提示符中逐行输入以下命令,然后在每行之后按 Enter:

    eText = editor.getText()
    uText = unicode(eText, "UTF-8")
    nText = unicodedata.normalize( "NFKD", uText )
    

如果您想确保 Python“确实输入了文本”:在您输入eText = editor.getText()(+ Enter 键)后,输入:print eText+ Enter。您应该看到带重音的文本转储在 Python 控制台输出窗格中。

  1. 单击(选择)空白选项卡 (这个很重要!)。
  2. editor.addText( nText.encode('ASCII', 'ignore') )在常用的Python控制台命令输入文本框中输入: 。
  3. 空标签将填充转换后的无重音文本。请务必仔细遵循此待办事项列表,因为很容易错过某个步骤(尤其是单击标签),然后您必须从头开始。

答案2

不要被你所做的事情所限制可用。我们在 N++ 中提供了 Python,这意味着快速的 SO 搜索[python] [unicode] remove accents会显示这个投票率很高的问题就是处理这个!

我们可以在 N++ 中轻松测试以了解其工作原理:

  1. 打开两个新的缓冲区/选项卡/文件或任何您喜欢的名称。
  2. 复制并粘贴这些拉丁文扩展的 UTF-8 字符进入第一。
  3. 右键单击第二个选项卡并选择“移动到其他视图”。
  4. 打开 Python 脚本控制台并尝试以下命令::

    从 Npp 导入 *
    导入 unicodedata
    << 在视图 1 中选择选项卡。 >>
    eText = editor.getText() << 在视图 2 中选择选项卡。 >>
    uText = unicode(eText, "UTF-8")
    nText = unicodedata.normalize( "NFKD", uText )
    editor.addText( nText.encode('ASCII', 'ignore') )

稍微浏览一下,似乎有很多方法可以完成删除重音符号的任务,问题是哪种方法最适合您。现在您可以看到在您的文本上“尝试”这些解决方案是多么容易,请继续尝试。一旦您喜欢某种方法,请将其添加为脚本(使用插件菜单),它将随时可用。

玩得开心!


顺便说一句 - 如果您没有安装 Python 脚本,您可以使用插件 -> 插件管理器来安装它。

答案3

脚本

以下是来自第一的第二答案,可用于分配快捷键来转换选定的文本:

class convert_char01:
    import unicodedata
    eText = editor.getSelText()
    uText = unicode(eText, encoding='utf-8', errors='ignore')
    nText = unicodedata.normalize( "NFKD", uText )
    editor.replaceSel(nText)

捷径

以下是创建快捷键来运行脚本的方法:

  • 为 NPP 安装 Python 脚本。
  • 创建新脚本:
    • 插件>Python 脚本>新脚本
    • 将其命名为“convert_char.py”。
  • 将此脚本添加到菜单:
    • 插件>Python 脚本>配置,点击您的用户脚本并点击添加按钮添加到菜单项
    • 建议还设置初始化启动时以加快速度。
  • 创建新的快捷热键:
    • 可能需要先重新启动 NPP,才能让新的菜单项显示在快捷方式映射器
    • 在下方创建新的快捷方式加速器设置>快捷方式映射器...

现在,当您突出显示一个字符串时,您可以快速转换该屏幕上的字符以运行脚本,而无需使用控制台。

参考

相关内容