繁体   English   中英

使用python从文本文件中删除除一个换行符以外的所有字符

[英]Removing all but one newline character from text file using python

我已经通过某些软件打印了一些数据,这给了我太多额外的新行。 我正在尝试删除所有多余的换行符,同时保持以下数据的列格式:

[atRA]_0    [Cyp26A1_mRNA]_0    
1   0   0

1.999   0   0

2.998   0   0

3.997   0   0

4.996   0   0

这段代码根本行不通

def remove_newline_from_copasi_report(self,copasi_data):
    with open(copasi_data) as f:
        lines=[]
        data = f.read()
        return data.rstrip()

而此代码删除了所有新行并破坏了格式:

def remove_newline_from_copasi_report(self,copasi_data):
    with open(copasi_data) as f:
        lines=[]
        data = f.read()
        return data.replace('\n','')

有谁知道如何从文本文件的每一行中删除除一个换行符以外的所有字符?

谢谢

lines = data.split('\n')
data = '\n'.join(line for line in lines if len(line) > 0)

应该管用

只需寻找双行并用单行替换它们:

In [1]: data = """[atRA]_0    [Cyp26A1_mRNA]_0    
   ...: 1   0   0
   ...: 
   ...: 1.999   0   0
   ...: 
   ...: 2.998   0   0
   ...: 
   ...: 3.997   0   0
   ...: 
   ...: 4.996   0   0"""

In[2]: print(data.replace('\n\n', '\n'))
[atRA]_0    [Cyp26A1_mRNA]_0    
1   0   0
1.999   0   0
2.998   0   0
3.997   0   0
4.996   0   0

您可以使用if line.strip()遍历文件对象,而无需将所有内容读入内存,然后尝试替换,只需在迭代时进行即可:

lines = "".join([line for line in f if line.strip()])
print(lines)

[atRA]_0    [Cyp26A1_mRNA]_0    
1   0   0
1.999   0   0
2.998   0   0
3.997   0   0
4.996   0   0

要仅一次存储一行,只需在循环中应用相同的逻辑进行迭代,或将列表设为gen exp并对其进行枚举:

for line in f:
    if line.strip():
        print(line)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM