向字符串添加零宽度字符

时间:2018-04-01 16:35:45

标签: python

我想在字符串中添加零宽度字符,因此它在视觉上看起来没有空格,但实际上我可以在字符上使用Python分割函数将字符串分隔为“单词”。

我搜索了很多,显然相当于零宽度的空间是\u200b。但是,如果我写一个像"Test\u200bTest"这样的字符串,它会打印为:Test?Test

我还尝试添加.encode("utf-8")。但这导致奇怪的字符添加出现在字符串中。我想因为编码已经设置为UTF-8。我是否必须将编码设置为其他内容以使输出正确?

编辑:

我正在研究文本加密程序。因为我不想放弃第一眼看到的文字(为了使手动解码更加困难),我想使用一个不可见的字符 - 就像零宽度空间一样。 如你看到的 here ,插入的问号表示尝试编码\u200b字符时出错。另一个迹象是:

teststr = "Test"+chr(8203)+"test"
file = open("C:\\...\\chartest.txt", "w")
file.write(teststr)
file.close()

这会导致以下错误: UnicodeEncodingError:'charmap'编解码器无法对位置4中的字符'\ u200b'进行编码:字符映射到

这可能是一个控制台问题。但这很奇怪,因为控制台应该具有完全的unicode支持。没有必要做任何事情来添加unicode字符。此外:更改到另一个代码页(chcp 65001,chcp 1252)无法解决问题(cp 65001甚至搞乱Pythons回溯输出,所以最好避免它)。

总而言之,我没有想法。所提到的字符都不是真正看不见的。而可能不可见的那个会导致EncodingError。有什么想法吗?

2 个答案:

答案 0 :(得分:0)

也许你正试图以错误的方式解决你的需求。相反,如果你保持你的字符串与普通空格,无论何时你需要打印没有空格,你只需

print(my_str.replace(' ', ''))

将打印不带空格的字符串(但保持my_str不变)

答案 1 :(得分:-1)

尝试以下:

str1 = "Test"

str1 = str1+chr(24)+str1
print (str1)
print(str1.split(chr(24)))