Извлечение данных из таблицы с различным количеством пробелов в Python - PullRequest
0 голосов
/ 04 июля 2018

Я хочу извлечь данные из файла .txt, который выглядит следующим образом в Python:

Pennsylvania       (105161,985645)     189562.58   0
California       (586253,566851)     556064.21   0
Kentucky       (875956,213560)     985022.85   1
Oklahoma       (485010,506222)     521446.15   0 

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

Я хочу объединить все записи одного ряда в набор и добавить все наборы в список. Как я могу извлечь записи из файла?

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

Любая помощь будет оценена

Ответы [ 2 ]

0 голосов
/ 04 июля 2018

line.split () будет работать, даже если вы измените количество пробелов.

with open("a.txt", "r") as fd:
    myList = []
    for i in fd.readlines():        # iterate over each line
        mytuple = tuple(m for m in i.split())  # generate tuples
        myList.append(mytuple)    # append tuples to list
    print(myList)

выход

[('Pennsylvania', '(105161,985645)', '189562.58', '0'), ('California', '(586253,566851)', '556064.21', '0'), ('Kentucky', '(875956,213560)', '985022.85', '1'), ('Oklahoma', '(485010,506222)', '521446.15', '0')]
0 голосов
/ 04 июля 2018

Используйте панд:

df = pd.read_csv('myfile.txt', header=None, sep="\s+")

Выход:

              0                1          2  3
0  Pennsylvania  (105161,985645)  189562.58  0
1    California  (586253,566851)  556064.21  0
2      Kentucky  (875956,213560)  985022.85  1
3      Oklahoma  (485010,506222)  521446.15  0
...