python去除zwnbsp字符(零宽度空白字符)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python去除zwnbsp字符(零宽度空白字符)相关的知识,希望对你有一定的参考价值。
参考技术A Q1:什么是ZWNBSP?A1:UTF-8有一个BOM(Byte Order Mark)的问题。
在Unicode编码中有一个叫做"zero-width no-break space (ZWNBSP)"的字符,它的编码是0xFEFF。而0xFEFF在是一个实际中不存在的字符,所以不应该出现在实际传输中。UCSUCS (Unicode Character Set) 规范建议我们在传输字节流前,先传输字符"ZWNBSP"。这样如果接收者收到FEFF,就表明这个字节流是Big-Endian的;如果收到FFFE,就表明这个字节流是Little- Endian的。因此字符"ZWNBSP"又被称作BOM。
删除文档中的 U+200B 零宽度空格字符(Typora显示红点)
从网页copy到Typora的内容可能会显示红点,很烦,查看后是U+200B 零宽度空格字符,一个一个删除很麻烦,正好学习下go语言,于是写个程序去除md文件中的U+200B 零宽度空格字符.
打包好的exe在文章结尾。
使用:
放入存放md文件目录下,程序遍历目录以及子目录中md文件,删除md文件中零宽度空格字符
package main
import (
"fmt"
"os"
"path/filepath"
"strings"
"io/ioutil"
)
func main()
filepath.Walk(".", walkfunc)
func rmu200b(s string) string
str := make([]rune, 0, len(s))
for _, v := range []rune(s)
if v == 8203
continue
str = append(str, v)
return string(str)
func walkfunc(path string, info os.FileInfo, err error) error
//fmt.Println(path)
ok := strings.HasSuffix(path, ".md")
if ok
//fmt.Println(path)
data, err := ioutil.ReadFile(path)
if err == nil
//fmt.Println(data)
var filedata = string(data)
//run := []rune(filedata)
//fmt.Println(filedata)
//fmt.Println(run)
//fmt.Printf("%U\\n", run)
//fmt.Println(data)
var filedatanew = rmu200b(filedata)
if len(filedata) != len(filedatanew)
fmt.Println(path)
ioutil.WriteFile(path+"bak",[]byte(filedata),0777)
ioutil.WriteFile(path,[]byte(filedatanew),0777)
return nil
以上是关于python去除zwnbsp字符(零宽度空白字符)的主要内容,如果未能解决你的问题,请参考以下文章
删除文档中的 U+200B 零宽度空格字符(Typora显示红点)
删除文档中的 U+200B 零宽度空格字符(Typora显示红点)