如何防止转义字符更改随机生成的Python字符串的输出?

如何防止转义字符更改随机生成的Python字符串的输出?,python,python-3.x,random,line-breaks,password-generator,Python,Python 3.x,Random,Line Breaks,Password Generator,此代码输出随机生成的字符串。对于 示例:V86Ijgh(!y7l0+x 如果出现转义字符,如\n V86Ijg\n!y7l0+x 并创建输出: V86Ijg !y7l0+x 因为它初始化了一个新行 而不是打印: V86Ij\n(!y7l0+x 像以前一样 避免转义字符的预期输出(如创建新行、制表符等)被解释的最佳方法是什么?我对输入没有选择,因为它是随机的。我想知道如何以原始形式输出字符串,而不从原始字符串中删除字符。我想知道生成密码时要显示的密码。您可以通过从字符串中删除所有空白字符来

此代码输出随机生成的字符串。对于 示例:V86Ijgh(!y7l0+x

如果出现转义字符,如\n

V86Ijg\n!y7l0+x
并创建输出:

V86Ijg 
!y7l0+x
因为它初始化了一个新行 而不是打印:

V86Ij\n(!y7l0+x
像以前一样


避免转义字符的预期输出(如创建新行、制表符等)被解释的最佳方法是什么?我对输入没有选择,因为它是随机的。我想知道如何以原始形式输出字符串,而不从原始字符串中删除字符。我想知道生成密码时要显示的密码。

您可以通过从
字符串中删除所有空白字符来创建自己的字符集以从中选择。可打印的
,使用set运算符:

chars = ''.join(set(string.printable) - set(string.whitespace))

password = random.choice(chars)

key_length = 1
while(key_length < 15):
        password += random.choice(chars)
        key_length = key_length + 1

print(password)
编辑如果要保留转义字符和空白字符,但只想在控制台上打印密码,请使用以下功能:

print(repr(password))

通过从
字符串中删除所有空白字符,您可以创建自己的字符集来选择frome。可打印的
,使用set运算符:

chars = ''.join(set(string.printable) - set(string.whitespace))

password = random.choice(chars)

key_length = 1
while(key_length < 15):
        password += random.choice(chars)
        key_length = key_length + 1

print(password)
编辑如果要保留转义字符和空白字符,但只想在控制台上打印密码,请使用以下功能:

print(repr(password))

如果希望字符串保持特殊字符的转义,则应使用转义字符对字符串进行编码,即:

print(password.encode("unicode_escape").decode("utf-8")) 
# on Python 2.x: print(password.encode("string_escape"))

使用将在字符串周围添加单引号。

如果希望字符串保留转义的特殊字符,则应使用转义字符对字符串进行编码,例如:

print(password.encode("unicode_escape").decode("utf-8")) 
# on Python 2.x: print(password.encode("string_escape"))

使用将在字符串周围添加单引号。

传递您认为可以接受的字符列表,而不是使用
string.printable
。您可以使用
repr()
字符串打印特殊字符。传递您认为可以接受的字符列表,而不是使用
string.printable
。您可以使用
repr()
一个字符串来打印我们的特殊字符。我实现了列表理解并删除了while循环。但是,这个“修复”并不能阻止程序在输出过程中解释转义字符和创建新行。请看我的编辑,我想如果只是打印,我想我误解了d你的问题我实现了列表理解并删除了while循环。但是,这个“修复”并不能阻止程序在输出过程中解释转义字符和创建新行。请看我的编辑,我想如果只是关于打印,这会解决问题,我想我误解了你的问题