Python 向字符串添加零宽度字符
我想在字符串中添加一个零宽度的字符,这样看起来就没有空格了,但实际上我可以在该字符上使用Python split函数将字符串分隔为“单词” 我已经搜索了很多,很明显零宽度空间的等价物是Python 向字符串添加零宽度字符,python,Python,我想在字符串中添加一个零宽度的字符,这样看起来就没有空格了,但实际上我可以在该字符上使用Python split函数将字符串分隔为“单词” 我已经搜索了很多,很明显零宽度空间的等价物是\u200b。但是,如果我编写一个字符串,如“Test\u200bTest”,它将被打印为:Test?Test 我还尝试添加.encode(“utf-8”)。但这导致字符串中出现奇怪的字符添加。我想是因为编码已经设置为UTF-8。我是否必须将编码设置为其他内容才能获得正确的输出 编辑: 我实际上在做一个文本加密程序
\u200b
。但是,如果我编写一个字符串,如“Test\u200bTest”
,它将被打印为:Test?Test
我还尝试添加.encode(“utf-8”)
。但这导致字符串中出现奇怪的字符添加。我想是因为编码已经设置为UTF-8。我是否必须将编码设置为其他内容才能获得正确的输出
编辑:
我实际上在做一个文本加密程序。由于我不想透露单词第一眼看到的结尾(使手动解码更加困难),我想使用一个不可见的字符-如零宽度空间中的字符。
如你所见
,插入的问号表示尝试编码\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的回溯输出,所以最好避免它)
总而言之,我没有主意了。上面提到的角色都不是真正看不见的。而那个可能不可见的会导致编码错误。有什么想法吗?试试下面的方法:
str1 = "Test"
str1 = str1+chr(24)+str1
print (str1)
print(str1.split(chr(24)))
也许你试图用一种错误的方式解决你需要的问题。你把字符串保留在正常的空格里,当你需要打印它而不带空格的时候,你就可以这样做了
print(my_str.replace(' ', ''))
它将打印不带空格的字符串(但保持原样)字符串没有问题
“Test\u200bTest”
。我猜你的终端不能显示零宽度字符,并用问号代替。这听起来像是XY问题——你不需要你真正想要的。你能澄清一下想要把字符串拆分成单词吗?“Test”+chr(24)+“Test”所以你想要一个“不可见”的字符?没错。这就是我需要的。一个不可见的字符。Test?Test
实际上它是一个向上箭头字符,但复制/粘贴会把它弄乱。Ascii字符24相当于取消字符。我知道,我猜shell决定如何表示它。在我的例子中,它是一个向上箭头字符。我们还可以使用chr(255)
将定义良好的Unicode字符替换为随机的8位字符,而这些字符的语义您显然不理解,这并不是一种改进。