我想在字符串中添加零宽度字符,因此它在视觉上看起来没有空格,但实际上我可以在字符上使用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。有什么想法吗?
答案 0 :(得分:0)
也许你正试图以错误的方式解决你的需求。相反,如果你保持你的字符串与普通空格,无论何时你需要打印没有空格,你只需
print(my_str.replace(' ', ''))
将打印不带空格的字符串(但保持my_str不变)
答案 1 :(得分:-1)
尝试以下:
str1 = "Test"
str1 = str1+chr(24)+str1
print (str1)
print(str1.split(chr(24)))