用空格转换\ x00

时间:2015-12-09 16:33:02

标签: python type-conversion python-2.x spaces

我通过以下方式阅读/ proc // cmdline文件:

pfile = '/proc/%s/cmdline' % pid
if os.path.isfile(pfile):
    fh = open(pfile, 'r')
    pname = repr(fh.read())
    fh.close()

print pname

输出:

'myexe\x00arg\x00arg2'

如果我删除了repr,则单词之间没有空格

'myexeargarg2'

所以我把它改成了

' '.join(fh.read().split('\x00'))

然后,我得到了:

'myexe arg arg2'

只是想知道是否还有其他方法可以将\ x00转换为空格?

2 个答案:

答案 0 :(得分:3)

如果查找ASCII表,您将看到\x00是NULL字符。当您打印某个str时,会尝试创建一个可打印版本的数据,并且打印不可打印的字符。通过查看string.printable

,您可以查看哪些字符可打印
import string
if '\x00' in string.printable:
    print "printable"
else:
    print "unprintable"

当您run this时,您会看到此输出"无法打印"。

但是repr尝试生成可以重新创建原始数据的内容,因此\x00需要在那里可见,因为需要重新创建原始数据。

如果您想在\x00的任何地方获取空间,只需replace使用fh.replace('\x00', ' ')的空格即可获得空格。

答案 1 :(得分:1)

这是一个简短的例子,可以帮助您回答问题。

strResult = strResult & Mid(strSource, i, 1)

它会将出现的内容替换为解释here