0

次のように、テキスト行がセミコロンで区切られたテキスト ファイルから項目を解析しようとしています。

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 が発生していましたが、テキスト ファイルに改行が 2 つあるとは知りませんでした。リストが作成される前に、これらの余分な改行を効果的に無視または削除するにはどうすればよいですか?

4

1 に答える 1

1

リスト内包表記に条件を追加できます。

self.separate = [elem.strip().split(';') for elem in self.stuff if elem.strip()]
于 2014-03-23T12:00:23.640 に答える