tntsjc 发表于 2014-06-24 16:58

【已解决】windows下ConfigParser,怎么读取\r\n等特殊字符?

本帖最后由 tntsjc 于 2014-06-25 14:19 编辑

新手学习python时遇到一个问题,在配置文件中写了一些http网络数据包内容,但是抓包时看到的内容是普通tcp报文,把\r\n当成普通字符了,不知道有什么办法能正确获取到\r\n等特殊字符。

linustd 发表于 2014-06-24 17:10

\r\n等转义字符,只有编译器在编译时自动处理才会变成真正的含义。
自动从配置文件读取字符串,只要自己替换了,比如

config = config_str.replace("\\r\\n", "\r\n")

tntsjc 发表于 2014-06-24 17:21

回复 2# linustd


    多谢多谢!我也想到这个办法了。但是有个新问题,如果是\x12\x34这样的字符怎么办呢?试着用相同的方法来替换,将\\x替换成\x时,python报错ValueError: invalid \x escape

linustd 发表于 2014-06-24 17:33

转义字符是语言自己定义的特性,这个应该网上找找,说不定有现成的方法可以完成。

tntsjc 发表于 2014-06-24 17:44

回复 4# linustd


    谢谢!实验了一下,如果是用\x12来替换\\x12不会报错,查了下\x后面好像必须跟16进制数。不知道这个怎么搞了……在找找看。

tntsjc 发表于 2014-06-24 20:42

没有找到好的办法……

linustd 发表于 2014-06-25 08:31

不老实google就说没找到?我看你是用baidu的吧,

看看哥搜索的结果:

Hello

World!

In : s.encode('string_escape')

Out: 'Hello\\nWorld!'

In : Out.decode('string_escape')

Out: 'Hello\nWorld!'

Not *quite* what you asked for, but it ought to be close enough.

tntsjc 发表于 2014-06-25 10:14

回复 7# linustd


    真没用gg,也没用bd,用的so,呵呵,感谢啊!不过我找到一个笨办法,用binascii的unhexlify来直接转成16进制。

linustd 发表于 2014-06-25 11:32

tntsjc 发表于 2014-06-25 10:14 static/image/common/back.gif
回复 7# linustd




切,有最标准的不用,非用歪门邪道的。

tntsjc 发表于 2014-06-25 14:19

回复 9# linustd


    还要多学习学习。{:3_190:}
页: [1]
查看完整版本: 【已解决】windows下ConfigParser,怎么读取\r\n等特殊字符?