簡體   English   中英

Python:readlines()方法創建空列表

[英]Python: readlines()-method creates empty lists

我正在嘗試使用分號分隔的文本行來解析文本文件中的項目,如下所示:

4037;HKO_2005;OBJECT-ORIENTED PROGRAMMING               ;18.12.2011;5

4037;HKO_2009;DATABASES I                               ;2.5.2011;5

4037;HKO_2011;ALGORITHMS I                              ;7.5.2011;5

4037;HKO_2038;PROGRAMMING BASICS IN JAVA                ;22.5.2010;5

到這樣的列表列表:

['4037', 'HKO_2005', 'OBJECT-ORIENTED PROGRAMMING', '18.12.2011', '5'],
['4037', 'HKO_2009', 'DATABASES I', '2.5.2011', '5'],
['4037', 'HKO_2011', 'ALGORITHMS I', '7.5.2011', '5'],
['4037', 'HKO_2038', 'PROGRAMMING BASICS IN JAVA', '22.5.2010', '5']

現在,我用於測試的代碼如下所示:

class Main:
    def inputFile(self):
        with open('data.txt', 'r') as data:
            self.stuff = data.readlines()
            self.separate = [elem.strip().split(';') for elem in self.stuff]
            print(self.separate)

justdoit = Main()
justdoit.inputFile()

我的問題是您已經看到的:文本文件在我粘貼到這里之前看起來沒有雙換行符。 使用我的代碼,readlines()方法在兩個換行符之間創建一個空列表,如下所示:

['4037', 'HKO_2005', 'OBJECT-ORIENTED PROGRAMMING          ', '18.12.2011', '5'],
[''],
['4037', 'HKO_2009', 'DATABASES I                          ', '2.5.2011', '5'],
[''],
['4037', 'HKO_2011', 'ALGORITHMS I                         ', '7.5.2011', '5'],
[''],
['4037', 'HKO_2038', 'PROGRAMMING BASICS IN JAVA           ', '22.5.2010', '5']
['']

我相信以后可以使用rstrip()從課程名稱中刪除空格,但是換行符讓我頭疼。 早些時候,我因此而得到了IndexError,而且我不知道文本文件是否包含雙換行符。 在創建列表之前,如何有效地忽略或刪除這些多余的換行符?

您可以為列表理解添加條件:

self.separate = [elem.strip().split(';') for elem in self.stuff if elem.strip()]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM