如何防止转义字符更改随机生成的 Python 字符串的输出?
How to prevent escape characters from changing the output of a randomly generated Python string?
此代码输出一串随机生成的字符。为了
示例:V86Ijgh(!y7l0+x
import string
import random
password = ''.join([random.choice(string.printable) for i in range(15)])
print(password)
在出现\n这样的转义字符的情况下
V86Ijg\n!y7l0+x
并创建输出:
V86Ijg
!y7l0+x
因为它初始化了一个新行
而不是打印出来:
V86Ij\n(!y7l0+x
和以前一样。
避免转义字符(例如创建新行、制表符等)的预期输出被解释的最佳方法是什么?我对输入别无选择,因为它是 随机化的 。我想知道如何在不从原始字符串中删除字符 的情况下以原始形式 输出字符串。我希望密码在生成时显示。
您可以使用集合运算符从 string.printable
中取出所有空白字符,从而将自己的字符集设为 select frome:
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)
请注意,整个循环可以用列表推导代替:
password = ''.join([random.choice(chars) for _ in range(15)])
编辑 如果您想保留转义符和空白字符,但只想将密码打印到您的控制台,请使用 repr()
函数:
print(repr(password))
如果你想让它保持特殊字符转义,你应该用转义字符编码你的字符串,即:
print(password.encode("unicode_escape").decode("utf-8"))
# on Python 2.x: print(password.encode("string_escape"))
使用 repr()
将在您的字符串周围添加单引号。
此代码输出一串随机生成的字符。为了 示例:V86Ijgh(!y7l0+x
import string
import random
password = ''.join([random.choice(string.printable) for i in range(15)])
print(password)
在出现\n这样的转义字符的情况下
V86Ijg\n!y7l0+x
并创建输出:
V86Ijg
!y7l0+x
因为它初始化了一个新行 而不是打印出来:
V86Ij\n(!y7l0+x
和以前一样。
避免转义字符(例如创建新行、制表符等)的预期输出被解释的最佳方法是什么?我对输入别无选择,因为它是 随机化的 。我想知道如何在不从原始字符串中删除字符 的情况下以原始形式 输出字符串。我希望密码在生成时显示。
您可以使用集合运算符从 string.printable
中取出所有空白字符,从而将自己的字符集设为 select frome:
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)
请注意,整个循环可以用列表推导代替:
password = ''.join([random.choice(chars) for _ in range(15)])
编辑 如果您想保留转义符和空白字符,但只想将密码打印到您的控制台,请使用 repr()
函数:
print(repr(password))
如果你想让它保持特殊字符转义,你应该用转义字符编码你的字符串,即:
print(password.encode("unicode_escape").decode("utf-8"))
# on Python 2.x: print(password.encode("string_escape"))
使用 repr()
将在您的字符串周围添加单引号。