如何枚举UTF-8文档中的唯一字符?和塞德?

如何枚举UTF-8文档中的唯一字符?和塞德?,utf-8,sed,unique,character,Utf 8,Sed,Unique,Character,我正在将一些波利盛英语词典从RTF转换成HTML。波兰的特殊角色表现得很好。但IPA(国际拼音字母)字形会变成有趣的东西,这取决于我使用什么程序进行转换。例如,/ˈbiːrɪ/显示为/ÈbiùrI/or/∪βιρⅧ/ 我想通过搜索和替换来更正这些文档,但我想确保不会遗漏任何字符,也不想手动搜索字典条目。我想输出文档中所有唯一的非ascii字符的列表 我发现了这个线索: 。。。我尝试了以下两个建议: sed-e“s//\0\n/g”inputfile | sort-u sed-e“s/(.)/

我正在将一些波利盛英语词典从RTF转换成HTML。波兰的特殊角色表现得很好。但IPA(国际拼音字母)字形会变成有趣的东西,这取决于我使用什么程序进行转换。例如,/ˈbiːrɪ/显示为/ÈbiùrI/or/∪βιρⅧ/

我想通过搜索和替换来更正这些文档,但我想确保不会遗漏任何字符,也不想手动搜索字典条目。我想输出文档中所有唯一的非ascii字符的列表

我发现了这个线索:

。。。我尝试了以下两个建议:
sed-e“s//\0\n/g”inputfile | sort-u
sed-e“s/(.)/\1\n/g”输入文件|排序-u

它们都工作得很好,并且似乎都产生相同的输出。我的问题是,它们只输出标准ASCII字符,而我要寻找的恰恰相反

sed工具看起来很棒,但我现在没有时间学习它(尽管我打算稍后再学习)。我希望已经掌握了这个工具的人能够清楚地知道解决方案,他们可以为我节省很多时间。[-:


提前感谢!

这不是一个
sed
解决方案,而是一个Python解决方案。它读取文件的内容,将其作为UTF-8,然后将其转换为一个集合(从而丢弃重复项),丢弃ASCII字符(0-127),对其进行排序,然后在每个字符之间用一个空行将其重新连接在一起:

'\n'.join(sorted(set(unicode(open(inputfile).read(), 'utf-8')) - set(chr(i) for i in xrange(128))))
如果你想从命令行运行

python -c "print '\n'.join(sorted(set(unicode(open('inputfile').read(), 'utf-8')) - set(chr(i) for i in xrange(128))))"

(您也可以使用
'.join
而不是
'\n.join
列出字符,字符之间没有换行。)

这不是一个
sed
解决方案,而是一个Python解决方案。它读取文件的内容,将其作为UTF-8,然后将其转换为一个集合(从而丢弃重复项),丢弃ASCII字符(0-127),对其进行排序,然后在每个字符之间用一个空行将其重新连接在一起:

'\n'.join(sorted(set(unicode(open(inputfile).read(), 'utf-8')) - set(chr(i) for i in xrange(128))))
如果你想从命令行运行

python -c "print '\n'.join(sorted(set(unicode(open('inputfile').read(), 'utf-8')) - set(chr(i) for i in xrange(128))))"
(您也可以使用
'.join
而不是
'\n'。join
将列出中间没有换行符的字符。)