python换行符怎么用_Python 换行符和多行模式

python换行符怎么用_Python 换行符和多行模式Python 的正则表达式支持多行模式 将每行文字分别匹配 然而各种操作系统里 换行符的表示法各不相同 会导致 Python 不能正确使用多行模式 目录花式换行符不同操作系统下 换行符的表示方法也不同 主要有以下三种 操作系统换行符名称 16 进制值 10 进制值转义表示 Unix LinuxLF0A10 nWindows DOSCRLF0D0A1 r nMacCR0D13 r 测试

486.png

Python 的正则表达式支持 多行模式,将每行文字分别匹配。然而各种操作系统里,换行符的表示法各不相同,会导致 Python 不能正确使用多行模式。

目录

花式换行符

不同操作系统下, 换行符的表示方法 也不同。主要有以下三种:

操作系统

换行符名称

16 进制值

10 进制值

转义表示

Unix、Linux

LF

0A

10

\n

Windows、DOS

CR LF

0D 0A

13 10

\r \n

Mac

CR

0D

13

\r

测试 Python 的表现

如果 Python 不能正确识别换行符,就无法按照期望,进入多行模式的匹配模式。

可以使用下面的脚本来检验各种换行符下,不同版本Python 能否正确进入多行模式。脚本如下:

import re

print(re.findall(r”^\w+$”, “hello\r\nbye\r\n”, re.M))

如果结果是 [‘hello’, ‘bye’] ,说明正确进入了多行模式;而如果结果是 [] , 则说明没有正常进入多行模式。

测试结果

操作系统

换行符表示

Python 2.7

Python 3.6

Unix、Linux

\n

[‘hello’, ‘bye’] ✔

[‘hello’, ‘bye’] ✔

Windows、DOS

\r \n

[] ✘

[] ✘

Mac

\r

[] ✘

[] ✘

测试结果说明,只有 \n 这种换行符能成功将 Python 带入 多行模式。

如何分辨换行符

那么面对传来的字节流,无论是来自文件、网络,如何知道其中的换行符是 上节 中的那种呢?我们需要以将字符串用二进制形式表达。

下面这个脚本可以观察字节流的二进制表示:

s=[“hello\n”,”hello\r\n”,”hello\r”]

for y in s: print(‘ ‘.join(format(ord(x), ‘b’) for x in y))

得到结果为:

1010 #\n

1101 1010 #\r\n

1101 #\r

如何纠正

那么怎么将换行符调整到 适合 Python 进入多行模式的呢?可以使用 re.sub() 查找替换函数:

print(re.findall(r”^\w+$”, re.sub(r”\r”,”\n”,s), re.M))

或者

print(re.findall(r”^\w+$”, re.sub(r”\r”,””,s), re.M))

将所有的 \r 删除或者 替换为 \n ,就能正确识别出换行符。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/178123.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月26日 下午5:58
下一篇 2026年3月26日 下午5:58


相关推荐

  • java保留两位小数不四舍五入_java截取两位小数

    java保留两位小数不四舍五入_java截取两位小数首先让我们来定义三个变量 doublex=5.112; doubley=5.118; doublez=5.1; 前两个用于演示四舍五入, 最后一个用于演示一位小数的情况方法一:使用String.format方法(四舍五入) System.out.println(String.format(“%.2f”,x)); System.out.println(S…

    2026年3月10日
    7
  • 大数据技术体系(长期更新)

    大数据技术体系(长期更新)2018 2021 年期间 笔者阅读了 200 大数据相关的书籍和专栏 本专栏为笔者 在多年读书笔记的基础上 结合自身的大数据开发心得体会 呕心沥血之作

    2026年3月20日
    3
  • Eric6安装及配置

    Eric6安装及配置Eric 是一个全功能的 python 编辑器和 IDE 用 python 编写 与 PyQt5 结合 满足了用 python 快速对 GUI 开发的需求为了以后自己能更快安装 我这里做个简易的记录 大家有什么不明白的可以问我 1 下载及安装 Eric6 下载因为最近的几个官方版本不支持汉化 所以我做了链接 实在想用中文的请点击这个下载 https download csdn net do

    2026年3月20日
    2
  • 事业单位图形推理1000题及答案_小学生图形推理题

    事业单位图形推理1000题及答案_小学生图形推理题  2020年事业单位联考:《职测》判断推理神预测!   经过几个月的紧张备考,广大考生终于在今天走上了“战场”。经过小时的奋笔疾书,2020年下半年事业单位联考职业能力测试于今天上午拉下帷幕。根据学员的惊喜反馈,我们发现华图教育又双叒叕预测中题目了!!!   通过考生们对题目的回忆,华图教育惊喜地发现有4个考点跟我们考前给学员预测的大致相同!下面我们就一起来简单看一下:   一…

    2025年8月27日
    9
  • transactionscope mysql_TransactionScope事务操作

    transactionscope mysql_TransactionScope事务操作using(TransactionScopetrans=newTransactionScope()){try{InsertUserBase();//它插入不成功,自己回滚UserInfosuserInfo=newUserInfos{UserID=”1″,RealName=”zzl”,};db.UserInfos.InsertOnSubmit(userInfo);db.SubmitC…

    2022年7月24日
    13
  • java h2数据库_JAVA 项目中使用 H2 数据库

    java h2数据库_JAVA 项目中使用 H2 数据库JAVA项目中使用H2数据库发布时间:2018-06-0815:43,浏览次数:823,标签:JAVA为什么要使用H2数据库H2数据库是可以嵌入到JAVA项目中的,因为只需要导入一个jar包即可,所以非常的方便。项目中导入H2将H2的jar包放到classpath里即可,我是用的maven,maven的配置如下com.h2databaseh2<version>1.4.1…

    2022年8月31日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号