Преобразовать текстовый файл в смешанный вывод с разделителями, используя python - PullRequest
1 голос
/ 15 апреля 2020

У меня довольно грязный текстовый файл, который мне нужно преобразовать в фрейм данных, чтобы использовать в качестве справочных данных. Ниже приведен отрывок:

http://amdc.in2p3.fr/nubase/nubase2016.txt

Я вычистил его как можно лучше, но коротко говоря Я хотел бы разделить пробелом большую часть каждой строки, а затем исправить разделитель в последнем столбце. т.е. игнорируйте пробелы в последнем разделе.

Текст очищенного файла данных

Может ли кто-нибудь указать мне правильное направление ресурса, который может это сделать? Не уверен, справится ли Pandas с этим?

Кенни

PS Я нашел несколько замечательных ресурсов для очистки нескольких пробелов и замены разрывов строк. Извините, не могу найти исходную ссылку, поэтому смотрите прикрепленный.

fin = open("Input.txt", "rt")
fout = open("Ouput.txt", "wt")

for line in fin:
      fout.write(re.sub(' +', ' ', line).strip() + "\n")
fin.close()
fout.close()

Ответы [ 2 ]

0 голосов
/ 29 апреля 2020

То, как мне удалось это сделать, было разделить CSV на две части, а затем рекомбинировать. Не особенно элегантно, но сделал работу, в которой я нуждался.

Разделить по столбцам

0 голосов
/ 15 апреля 2020

Так что я бы сделал очень просто, я бы максимально очистил данные и затем преобразовал их в файл csv, потому что они просты в использовании. Затем я бы шаг за шагом загрузил его в pandas фрейм данных и изменил бы, если бы это было необходимо.

with open("NudatClean.txt") as f:
    text=f.readlines()

import csv
with open('dat.csv', 'w', newline='') as file:
    writer = csv.writer(file)
    for i in text:
        l=i.split(' ')
        row=[]
        for a in l:
            if a!='':
                row.append(a)
        print(row)
        writer.writerow(row)

Это должно сработать для начала. Но я не знаю, что вы хотите удалить точно, поэтому я думаю, что остальное должно быть довольно ясно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...