python3程序运行中会跳过注释行,Python: 读取文件时如何忽略#条注释行
我建议您在看到
#
字符时不要忽略整行。只是忽略其余部分。这可以通过名为
partition
的字符串方法轻松完成:
with open("filename") as f:
for line in f:
line = line.partition('#')[0]
line = line.rstrip()
# ... do something with line ...
partition
返回一个元组: 分节线, 该分节线之前的所有内容以及该分节线之后的所有内容。因此, 在使用
[0]
进行索引时, 我们仅将零件放置在剖面线之前。
编辑: 如果您使用的Python版本没有
partition()
, 则可以使用以下代码:
with open("filename") as f:
for line in f:
line = line.split('#', 1)[0]
line = line.rstrip()
# ... do something with line ...
这将使用#字符分割字符串, 然后在分割之前保存所有内容。
1
自变量除以1后,
.split()
方法的执行将停止; 由于我们仅获得第0个子字符串(通过使用
[0]
进行索引), 因此即使您不使用
1
参数Response, 也会得到相同的结果, 但可能会更快。(由于@gnr的注释, 从我的源代码简化而来。我的源代码很乱, 没有充分的理由; 谢谢@gnr。)
您也可以只编写自己的
partition()
版本。这是一个名为
part()
的名称:
def part(s, s_part):
i0 = s.find(s_part)
i1 = i0 + len(s_part)
return (s[:i0], s[i0:i1], s[i1:])
@dalle指出#可以出现在一行上。正确设置它并不容易, 因此我只是忽略了它, 但是我应该说些什么。
如果您的输入文件具有足够简单的规则来使用带引号的字符串, 则并不困难。如果您接受任何有效的Python引号引起来的字符串, 将很困难, 因为存在单行, 双行, 多行反斜杠引号, 行尾转义字符串, 三引号(使用单引号或双引号), 甚至是原来的弦! 正确处理所有这些问题的唯一可能方法是使用复杂的状态机。
但是, 如果我们将自己限于简单的带引号的字符串, 则可以使用简单的状态机来处理它。我们甚至可以在字符串中使用反斜杠双引号。
c_backslash = '\\'
c_dquote = '"'
c_comment = '#'
def chop_comment(line):
# a little state machine with two state varaibles:
in_quote = False # whether we are in a quoted string right now
backslash_escape = False # true if we just saw a backslash
for i, ch in enumerate(line):
if not in_quote and ch == c_comment:
# not in a quote, saw a '#', it's a comment. Chop it and return!
return line[:i]
elif backslash_escape:
# we must have just seen a backslash; reset that flag and continue
backslash_escape = False
elif in_quote and ch == c_backslash:
# we are in a quote and we see a backslash; escape next char
backslash_escape = True
elif ch == c_dquote:
in_quote = not in_quote
return line
我真的不想参与新手问题的复杂性, 但是这个状态机非常简单, 我希望它会很有趣。
python3程序运行中会跳过注释行,Python: 读取文件时如何忽略#条注释行相关推荐
- python3程序运行中会跳过注释行_[python] 去除代码源文件中单行注释
""" 利用正则表达式去除文件中的单行注释,支持多行稍加更改即可 """ import os import re pattern_c = { ...
- Dump程序运行中的状态,变量值,等到文件
在无法设置断点或数据量巨大的情况下,将程序运行状态输出到磁盘文件后进行分析是个有效的方法.如果数据较少,可以直接通过设置断点的"when hit..." 向 output 窗口输出 ...
- vscode 快速调到定义处_vim技巧:在程序代码中快速跳转,在文件内跳转到变量定义处...
本篇文章介绍 vim 的一些使用技巧: 在程序代码中快速跳转 在文件内跳转到变量定义处 在程序代码中快速跳转 在 vim 中查看代码文件时,可以使用下面命令在程序代码中快速跳转,提高效率. % 跳转到 ...
- c语言代码存放的区域 堆栈,C语言中内存分布及程序运行中(BSS段、数据段、代码段、堆栈)...
BSS段:(bss segment)通常是指用来存放程序中未初始化的全局变量的一块内存区域.BSS是英文Block Started by Symbol的简称.BSS段属于静态内存分配. 数据段 :数据 ...
- 使用Python读取文件夹中的图片
文章目录 Python创建新的文件夹 Python读取文件夹中的图片内容以及存取 一个文件夹中含有大量的图片文件,jpg格式和png格式的.需要从中选出一些比较适合电脑分辨率的,也就是宽度大于高度 ...
- python中读取文件内容-Python读取文件内容的三种常用方式及效率比较
本文实例讲述了Python读取文件内容的三种常用方式.分享给大家供大家参考,具体如下: 本次实验的文件是一个60M的文件,共计392660行内容. 程序一: def one(): start = ti ...
- python读取文件路径报invalid_关于Python读取文件的路径中斜杠问题
最近用Python读取文件,发现有时候用 '\' 会报错,换成 '\\' 就不会报错.查了下资料发现,'\'是Python的转义字符,如果路径中存在'\t'或者'\r'这样的特殊字符,'\'就无法起到 ...
- 在python中读取文件时如何去除行末的换行符以及在Windows与Linux中的区别
[时间]2018.11.14 [题目]在python中读取文件时如何去除行末的换行符以及在Windows与Linux中的区别 一.去除换行符 以使用readline进行读取为例: import red ...
- python3文件的编码类型是_Python3.x环境创建Python脚本文件时,需要将文件编码格式设置为...
Python3.x环境创建Python脚本文件时,需要将文件编码格式设置为 答:UTF-8 在黄种人群中有一种叫白化病的隐性遗传病,其致病原因是 答:表皮中的黑色素细胞缺乏酪氨酸酶: 注射用水可通过( ...
最新文章
- Java Proxy和CGLIB动态代理原理
- Discuz1.5 密码错误次数过多,请 15 分钟后重新登录
- 对Servlet容器的补充
- 步进电机编写单4拍或4-8拍方式的汇编或c语言控制程序.,基于SCM和PLC的两种步进电机控制方法...
- 微信小程序初始化 operateWXData:fail invalid scope
- golang 解析php序列化,golang实现php里的serialize()和unserialize()序列和反序列方法
- 有关二叉树的相关实现:建树,遍历(递归与非递归实现)
- AR+LBS街景实景红包PokemonGo游戏捉妖夺宝营销解决方案定制开发暨百度高德地图Unity插件SDK
- 算法面试题(数据结构)
- Java代码审查工具 FindBugs下载、安装和使用(无需集成环境一键安装使用)
- Android飞机大战游戏报告,基于android的飞机大战游戏设计与开发.doc
- Typora入门手册
- 超全Python图像处理讲解(多图预警)
- day04 java学习
- 用瑞利准则研究显微镜物镜的分辨率
- 月薪30K的运维工程师面试宝典(面试必备干货)
- CentOS7下matplotlib(JupyterLab、Anaconda3)显示中文乱码问题
- 如何做好文献阅读及笔记整理
- PyTorch validation loss 增大,为什么 accuracy 也在增大?
- 企业应用IPv6改造方案
热门文章
- 嘉年华回顾丨杜小勇教授带你解密One Size Does not Fit All?
- 活动丨4场直播华丽丽来袭,快来参与
- 文档下载:《两万字深度介绍分布式系统原理》.pdf
- Oracle 19c 新特性:混合分区表Hybrid partitioned tables强体验
- VRAR产业峰会暨第二届华为VR开发应用大赛颁奖典礼在和平区成功举办
- 云小课 | 玩转HiLens Studio之快速订购HiLens Studio版本
- 来不及解释!Linux常用命令大全,先收藏再说
- 让垃圾分类开发“极快致简”的好物件,零基础的开发小白也能轻松驾驭它!
- 【华为云技术分享】如何拆分用户故事
- Reactive(3)5分钟理解 SpringBoot 响应式的核心-Reactor