Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 向字符串添加零宽度字符_Python - Fatal编程技术网

Python 向字符串添加零宽度字符

Python 向字符串添加零宽度字符,python,Python,我想在字符串中添加一个零宽度的字符,这样看起来就没有空格了,但实际上我可以在该字符上使用Python split函数将字符串分隔为“单词” 我已经搜索了很多,很明显零宽度空间的等价物是\u200b。但是,如果我编写一个字符串,如“Test\u200bTest”,它将被打印为:Test?Test 我还尝试添加.encode(“utf-8”)。但这导致字符串中出现奇怪的字符添加。我想是因为编码已经设置为UTF-8。我是否必须将编码设置为其他内容才能获得正确的输出 编辑: 我实际上在做一个文本加密程序

我想在字符串中添加一个零宽度的字符,这样看起来就没有空格了,但实际上我可以在该字符上使用Python split函数将字符串分隔为“单词”

我已经搜索了很多,很明显零宽度空间的等价物是
\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位字符,而这些字符的语义您显然不理解,这并不是一种改进。