Python 将变量更改为与打印输出相同
我不明白print语句如何清除变量中的所有垃圾字符。我已经有了一个解决办法,在“1H”之后拆分文本并去掉新行字符,但我很好奇如何更严格地完成这项工作,并将干净的打印输出变成我的变量。print语句是如何清理文本的 在进一步阅读之后,我尝试将Python 将变量更改为与打印输出相同,python,python-2.7,Python,Python 2.7,我不明白print语句如何清除变量中的所有垃圾字符。我已经有了一个解决办法,在“1H”之后拆分文本并去掉新行字符,但我很好奇如何更严格地完成这项工作,并将干净的打印输出变成我的变量。print语句是如何清理文本的 在进一步阅读之后,我尝试将\uu str\uu作为类的一部分来实现,但实现起来有困难。下面是我的第一次尝试 x Out[18]: '\x1b[24m\x1b[1m\x1b[2;1HPressure Index \r\n' print x Pressure Index
\uu str\uu
作为类的一部分来实现,但实现起来有困难。下面是我的第一次尝试
x
Out[18]: '\x1b[24m\x1b[1m\x1b[2;1HPressure Index \r\n'
print x
Pressure Index
str(x)
Out[20]: '\x1b[24m\x1b[1m\x1b[2;1HPressure Index \r\n'
x.__str__()
Out[21]: '\x1b[24m\x1b[1m\x1b[2;1HPressure Index \r\n'
但我还是会
class readable(str):
def __str__(self):
return str(self)
编辑:
我想要的输出是print语句输出。我试图去掉变量中所有多余的字符,这样它将只是一个字符串,读取“压力索引”\x1b
是转义字符(也可以写成字符串中的\e
),而ESC[m
是用于更改各种文本模式(粗体、下划线、颜色等)的转义序列.print
按原样打印控制字符,而不是试图将其显示为转义序列,因此您在输出中看不到它们,它们在终端上具有所需的效果。您可以在的Wikipedia页面上阅读这些转义序列
如果要将变量设置为用转义序列显示的表示形式,请使用repr()
函数:
y=readable(x)
y
Out[50]: '\x1b[24m\x1b[1m\x1b[2;1HPressure Index \r\n'
当我使用
repr
时,我得到以下输出xout[51]:'\x1b[24m\x1b[1m\x1b[2;1hppressure Index\r\n'repr(x)Out[52]:“\\x1b[24m\\x1b[1m\\x1b[2;1hppressure Index\\r\\n”
我想要的是打印使用的干净输出。包含所有转义字符等的输出stripped@Novice:但是print
不会删除这些字符!它会将它们发送到终端,而这反过来也不会删除它们,而是使用它们。您可以将\t
替换为空格(但替换为多少?)但是,您会用什么来代替\n
来表示行尾?它有一种X-Y问题的味道:您希望通过这样做来解决什么问题?我正在从串行端口读取数据并在GUI消息框中显示输出,因此我不想用所有额外的字符来混淆人们。我需要将从串行端口读取的数据传递到我的GUI线程,然后显示它,这将不使用打印。我已经有了一个解决方案,可以在95%的时间内工作,但我想知道是否可以模仿打印语句所做的工作,使其在100%的时间内工作。我真的不需要任何格式化字符,因为我在GUI应用程序中处理新行。每一条新消息都会得到一个new Line听起来您需要一个库,在消息框中显示字符串时可以转换或删除ANSI转义码。请看一下作为起点。谢谢。由于我的问题措词不当,我获得了否决票。您告诉我print语句正在做什么,所以您回答了我的初始问题
y = repr(x)
print y