簡體   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