python - 从字符串中剥离注释行

标签 python string parsing text

我有一个字符串变量,其中包含来自大文本文件的输入。文本文件中的注释以“#”开头,以新行结尾。

所以,我想做的是从此字符串生成另一个字符串,其中删除了所有以“#”开头并以换行符结尾的注释行。

所以,我想我可以做一些事情,我可以将字符串拆分为:

def transform_string(input):
    output = ''
    # Look for #
    sub_strs = input.split('#')
    for s in sub_strs:
        # Look for newline
        sub_sub_strs = s.split('\r\n')
        for j in sub_sub_strs:
            output += j

return output

但是,它看起来很难看,我想知道是否有更优雅的 pythonic 方式来做到这一点。而且,这很容易出错。因为每个“#”都有一个对应的换行符,所以我想在第一次出现时进行拆分,而不是完全拆分“\r\n”,我想。

最佳答案

生成器可能是这里最 Pythonic 的解决方案:

def clean_input(filename):
    with open(filename, 'r') as f:
        for line in f:
            if not line.lstrip().startswith('#'):
                yield line

for line in clean_input('somefile.txt'):
    ...

这允许您将注释剥离或您需要的任何其他预处理从文件的实际处理中移开,您可以在这些文件中迭代清理过的数据。

关于python - 从字符串中剥离注释行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27801907/

相关文章:

python - 使用 SimpleKML 绘制大圆

Python 循环缺少结果

c# - 如何解析数组中的json字符串?

python - Microsoft Powerpoint Python 解析器

parsing - 与 Alex 和 Happy 一起管理职位信息

python - 如何以与 MATLAB 相同的方式构造 Python 库和路径

python - python中的视频和音频处理库

java - 将字符串写入套接字的输出流

c - 嵌入式域中 strlen() 的缺点

Python 查找函数不起作用。我究竟做错了什么?