Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.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_Python 2.7 - Fatal编程技术网

Python 将变量更改为与打印输出相同

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

我不明白print语句如何清除变量中的所有垃圾字符。我已经有了一个解决办法,在“1H”之后拆分文本并去掉新行字符,但我很好奇如何更严格地完成这项工作,并将干净的打印输出变成我的变量。print语句是如何清理文本的

在进一步阅读之后,我尝试将
\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