免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 6739 | 回复: 7
打印 上一主题 下一主题

python 读取文件,怎样将文件中的\r\n转换成0d 0a ? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-07-14 23:00 |只看该作者 |倒序浏览
我想从文件中读取一行内容,这些内容类似abc\r\n test ,读取后显示就是abc\r\n test, 但是我想把\r\n当作转义字符处理,请问怎么操作

论坛徽章:
33
荣誉会员
日期:2011-11-23 16:44:17天秤座
日期:2014-08-26 16:18:20天秤座
日期:2014-08-29 10:12:18丑牛
日期:2014-08-29 16:06:45丑牛
日期:2014-09-03 10:28:58射手座
日期:2014-09-03 16:01:17寅虎
日期:2014-09-11 14:24:21天蝎座
日期:2014-09-17 08:33:55IT运维版块每日发帖之星
日期:2016-04-17 06:23:27操作系统版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-24 06:20:0015-16赛季CBA联赛之天津
日期:2016-05-06 12:46:59
2 [报告]
发表于 2014-07-15 08:13 |只看该作者
  1. >>> ord("\n")
  2. 10
  3. >>> ord("\r")
  4. 13
  5. >>>
复制代码

论坛徽章:
0
3 [报告]
发表于 2014-07-15 14:58 |只看该作者
回复 2# q1208c
您肯能理解错我的意思了,我从文件中读取的\r\n是以四个字节存储在内存中分别是'\' 'r' '\' 'n', 而我们在例如 print '\r\n'这种句子中编译器会把他们当做转义字符处理,直接就变成0d 0a了,所以我想问的是怎么把以可见字符出现的\r\n, 变成程序中的转义字符, 希望能有哪个库已经实现这个功能,谢谢您的回答

   

论坛徽章:
4
金牛座
日期:2013-10-11 16:12:50卯兔
日期:2014-07-31 09:17:19辰龙
日期:2014-08-08 09:28:02狮子座
日期:2014-09-14 20:32:05
4 [报告]
发表于 2014-07-15 15:06 |只看该作者
本帖最后由 ssfjhh 于 2014-07-15 15:53 编辑
  1. In [110]: d = {'\\r': '\r', '\\t': '\t', '\\n': '\n'}

  2. In [111]: s
  3. Out[111]: 'abc\\r\\n test'

  4. In [112]: re.sub(r'\\\w', lambda m: d[m.group()], s)
  5. Out[112]: 'abc\r\n test'

  6. In [113]:
复制代码
这是不是你想要的?

论坛徽章:
33
荣誉会员
日期:2011-11-23 16:44:17天秤座
日期:2014-08-26 16:18:20天秤座
日期:2014-08-29 10:12:18丑牛
日期:2014-08-29 16:06:45丑牛
日期:2014-09-03 10:28:58射手座
日期:2014-09-03 16:01:17寅虎
日期:2014-09-11 14:24:21天蝎座
日期:2014-09-17 08:33:55IT运维版块每日发帖之星
日期:2016-04-17 06:23:27操作系统版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-24 06:20:0015-16赛季CBA联赛之天津
日期:2016-05-06 12:46:59
5 [报告]
发表于 2014-07-15 15:38 |只看该作者
  1. $ python
  2. Python 2.6.6 (r266:84292, Nov 21 2013, 12:39:37)
  3. [GCC 4.4.7 20120313 (Red Hat 4.4.7-3)] on linux2
  4. Type "help", "copyright", "credits" or "license" for more information.
  5. >>> a = '\\'
  6. >>> b = 'n'
  7. >>> c = '\\'
  8. >>> d = 'r'
  9. >>> a
  10. '\\'
  11. >>> b
  12. 'n'
  13. >>> c
  14. '\\'
  15. >>> d
  16. 'r'
  17. >>> xx = eval("'''" + a + b + c + d + "'''")
  18. >>> for x in xx:
  19. ...     ord(x)
  20. ...
  21. 10
  22. 13
  23. >>> xx
  24. '\n\r'
  25. >>>
复制代码
回复 3# dafengqixi


   

论坛徽章:
4
金牛座
日期:2013-10-11 16:12:50卯兔
日期:2014-07-31 09:17:19辰龙
日期:2014-08-08 09:28:02狮子座
日期:2014-09-14 20:32:05
6 [报告]
发表于 2014-07-15 15:57 |只看该作者
回复 5# q1208c


    这真是一个好办法,我怎么就没有想到呢。
  1. print(eval("'''{}'''".format(s)))
复制代码

论坛徽章:
0
7 [报告]
发表于 2014-07-15 16:01 |只看该作者
回复 5# q1208c

受教了,我是刚接触Python, 懂的不多,我刚才也找到了一个方法,就是用字符串的查找替换功能


    for (num, line) in enumerate(f):
        line = line.replace('\\r', '\r')
        line = line.replace('\\n', '\n')
这样也能替换成转义字符

论坛徽章:
33
荣誉会员
日期:2011-11-23 16:44:17天秤座
日期:2014-08-26 16:18:20天秤座
日期:2014-08-29 10:12:18丑牛
日期:2014-08-29 16:06:45丑牛
日期:2014-09-03 10:28:58射手座
日期:2014-09-03 16:01:17寅虎
日期:2014-09-11 14:24:21天蝎座
日期:2014-09-17 08:33:55IT运维版块每日发帖之星
日期:2016-04-17 06:23:27操作系统版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-24 06:20:0015-16赛季CBA联赛之天津
日期:2016-05-06 12:46:59
8 [报告]
发表于 2014-07-15 17:13 |只看该作者
回复 6# ssfjhh

抄来的.
   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP