табуляция Python из файла - PullRequest
0 голосов
/ 27 ноября 2018

Я импортирую файл с разделителями табуляции.

import csv
with open(logfile) as f:
    csvlines = csv.reader(f,delimiter='\t')
    for row in csvlines:
        print(row)
 prints [' mike            john              steve']

Есть ли способ заставить его напечатать

 make|steve|john

Я пытался использовать csv.DictReader, но так как это не настоящий CSV-файл, он испортил

1 Ответ

0 голосов
/ 27 ноября 2018

Невозможно воспроизвести:

import csv
logfile = "t.txt"

with open(logfile,"w") as f:
    f.write('mike\tjohn\tsteve\n')
    f.write('mike           john           steve\n')  # no tabs, just spaces

with open(logfile) as f:
    csvlines = csv.reader(f,delimiter='\t')
    for row in csvlines:
        print(row) 

Вывод:

['mike', 'john', 'steve']
['mike           john           steve']

Возможно, перед вами файл, разделенный пробелами ... следовательно, все сопоставлены в один столбец.


Вы можете проанализировать разделенный пробелами файл следующим образом:

with open(logfile) as f:
    csvlines = csv.reader(f,delimiter=' ', skipinitialspace=True)
    for row in csvlines:
        print(row)  

, который дает вам:

['mike\tjohn\tsteve']        # no spaces, all in one column
['mike', 'john', 'steve']    # multiple consecutive spaces = 1 column-divider
...