簡體   English   中英

如何打印這些字符?

[英]How do I print these characters?

我有一個字符串:

"\\xB9 blah\n   blah: \xbf\xaa\xb7\xa2\xb2\xbf\n" 

我希望將其打印為:

\\xB9 blah
   blah: \\xbf\\xaa\\xb7\\xa2\\xb2\\xbf

我努力了:

s = "\\xB9 blah\n   blah: \xbf\xaa\xb7\xa2\xb2\xbf\n"
s = s.replace(r'\x',r'\\x')                                                     
print s

但是在blah之后,這會在第二行打印出看起來很滑稽的人物: 我如何讓它工作?

字符串中的\\xNN表示法轉換為代碼為NN的字符。 為了使你的replace方法能夠做你想要的,你需要為它提供一個字符串,它可以找到substring \\x 您可以使用原始字符串,或者只是轉義反斜杠:

s = r"\\xB9 blah\n   blah: \xbf\xaa\xb7\xa2\xb2\xbf\n"
s = s.replace(r'\x',r'\\x')

s = "\\xB9 blah\n   blah: \\xbf\\xaa\\xb7\\xa2\\xb2\\xbf\n"
s = s.replace(r'\x',r'\\x')

如果你想打印轉移字符的轉義版本,那就有點棘手了。 假設您只想轉義擴展的ASCII字符,我會這樣做:

def escape_non_ascii(s):
    out = ''
    for c in s:
        if 31 < ord(c) < 127:
            out += c
        elif c == '\n':
            out += r'\n'
        else:
            out += r'\x{0:x}'.format(ord(c))
    return out

print escape_non_ascii("\\xB9 blah\n   blah: \xbf\xaa\xb7\xa2\xb2\xbf\n")

嘗試這個:

s = r"\\xB9 blah\n   blah: \xbf\xaa\xb7\xa2\xb2\xbf\n"
for part in s.split('\\n'):
    print part

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM