【发布时间】:2021-05-06 23:26:07
【问题描述】:
Bulmaca-Zeka Oyunu<200f>
我在一个文本文件中有很多字符串,我注意到其中一个有这个 字符。我想找到所有具有此字符的条目并将其删除。但在 Vim 中,我无法通过使用搜索字符串 '' 搜索 '' 找到它。可能是 1 个字符而不是 6 个单独的字符。
在 Python 或 VIM 中,如何删除或搜索它们?
【问题讨论】:
标签: python python-3.x vim unicode
Bulmaca-Zeka Oyunu<200f>
我在一个文本文件中有很多字符串,我注意到其中一个有这个 字符。我想找到所有具有此字符的条目并将其删除。但在 Vim 中,我无法通过使用搜索字符串 '' 搜索 '' 找到它。可能是 1 个字符而不是 6 个单独的字符。
在 Python 或 VIM 中,如何删除或搜索它们?
【问题讨论】:
标签: python python-3.x vim unicode
尖括号中的文字字符是 Vim 处理一些有问题的不可打印字符的方式。起初它们很令人费解,但它们真的很容易弄清楚,因为它们只是拼出字符的十六进制代码。
在这种情况下,<200f> 是 U+200F 的文字表示,您可以这样搜索:
/\%u200f
所以,如果你想摆脱当前缓冲区中出现的<200f>,你所要做的就是:
:%s/\%u200f//g
见:help \%u。
【讨论】:
您在vim 中找不到它,因为您没有搜索正确的字符串。
检查您的 vim 文档:尖括号是元字符。只需将它们转义,然后删除不需要的字符串。
:%s/\<200f\>//g
【讨论】:
< 和> 不是元字符,而且OP 的缓冲区中没有字符串<200f>,而且您的搜索模式无论如何都会匹配200f,而不是<200f>。
在 Python 中,您也许可以使用字符串替换:
line_of_text = "Bulmaca-Zeka Oyunu<200f>"
print(line_of_text.replace("<200f>", "")
输出:
Bulmaca-Zeka Oyunu
【讨论】:
"<200f>" 这是一个 6 个字符的字符串,而 OP 有一个具有此表示的字符。