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

2024-05-13 03:18:51 发布

您现在位置: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','')

有人知道如何从我的文本文件的每一行删除除一个换行符以外的所有字符吗?你知道吗

谢谢


Tags: 数据代码fromselfreportdatadefas
3条回答

只需查找双新线并用单新线替换它们:

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()迭代file对象,无需将所有内容读入内存,然后尝试替换,只需在迭代时执行:

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和ietarte:

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

应该有用

相关问题 更多 >