чтение текстового файла в Python с более чем одним пробелом между наблюдением - PullRequest
0 голосов
/ 25 сентября 2018

У меня есть очень необычный текстовый файл, в котором наблюдения разделены большим количеством пробелов, и мой код получает следующую ошибку:

ОБНОВЛЕНИЕ: проблема в том, что у меня весь этот беспорядок вверхуиз TXT, и я не знаю, как бороться с этим, кроме использования перечислять и переходить строки, проблема в том, что у меня есть более 50 файлов, которые я должен проанализировать ..

LocationCode IndustryCode OccupationCode TotalResults SourceCode           CreatedOn                   UpdatedOn

-------------- --------------------------------------- 
---------------------    ------ -------------------------------------------------- ------------ -----     ------- -------------- ------------ ---------- ---------------------------      ---------------------------
        rftergt------------------




error:IndexError: list index out of range

Пожалуйста, см.пара строк из текстового файла:

8969758        35175                                   2018-05-03 18:32:11.9629608                                                    21CIWS       130          NULL           2685         JSW        2018-05-03 18:32:12.1213757 2018-05-03 18:32:12.1213757

8969759        37132                                   2018-05-03 18:32:12.3444130                                                    49TWNQ       NULL         NULL           654          JSW        2018-05-03 18:32:12.5069561 2018-05-03 18:32:12.5069561

8969761        319150                                  2018-05-03 18:32:16.6022496                                                    49MCKY       NULL         NULL           678          JSW        2018-05-03 18:32:16.7648819 2018-05-03 18:32:16.7648819

Мой код:

first_row = True
with open("10_JobSearchLog.txt" ,'r')as f:

    reader = csv.reader(f , delimiter =",")
    header = next(reader)

    for line in f:
        if first_row:
            first_row = False
            continue

        line = line.strip().split(" ")
        print(line)
        buck1,buck2,buck3,buck4 = line[0],line[1],line[3],line[4]

Ответы [ 2 ]

0 голосов
/ 25 сентября 2018

Решите проблему с обновлением, изменив свой код на

with open(filename) as infile:
    header = next(infile)  #Header
    for line in infile:
        if line.strip():             #Check if line is not empty
            line = line.split()      #Split line by space
            if len(line) >= 4:
                buck1,buck2,buck3,buck4 = line[0],line[1],line[3],line[4]
                print(buck1,buck2,buck3,buck4)

, сделав это, и убедитесь, что если какая-либо часть файла не соответствует вашему конкретному формату, вы пропустите эту строку,следовательно, вы пропустите эти грязные заголовки:)

0 голосов
/ 25 сентября 2018

Использование.

with open(filename) as infile:
    header = next(infile)  #Header
    for line in infile:
        if line.strip():             #Check if line is not empty
            line = line.split()      #Split line by space
            buck1,buck2,buck3,buck4 = line[0],line[1],line[3],line[4]
            print(buck1,buck2,buck3,buck4)

Выход:

('8969759', '37132', '18:32:12.3444130', '49TWNQ')
('8969761', '319150', '18:32:16.6022496', '49MCKY')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...