Разбиение текстового файла на целые числа в Python - PullRequest
0 голосов
/ 23 ноября 2018
with open("data1.txt", newline='') as f:
    r = csv.reader(f)
    s = list(r)

    dataList = []

У меня есть файл данных, содержащий строки двоичных чисел, таких как:

00000 0
00001 0
00010 0

и т. Д.

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

['0','0','0','0','0','0']
['0','0','0','0','1','0']
['0','0','0','1','0','0']

и т. Д., А затем добавляем каждое из них в dataList.Пока я могу разделить их на расстояние между ними, но это все

Ответы [ 4 ]

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

Если вы можете использовать стороннюю библиотеку, вы можете сделать это с помощью Pandas:

import pandas as pd
from io import StringIO

x = StringIO("""00000 0
00001 0
00010 0""")

# replace x with 'file.csv'
df = pd.read_csv(x, delim_whitespace=True, dtype=object, header=None)

res = [[*x, y] for x, y in df.values]

Результат:

[['0', '0', '0', '0', '0', '0'],
 ['0', '0', '0', '0', '1', '0'],
 ['0', '0', '0', '1', '0', '0']]
0 голосов
/ 23 ноября 2018

Это, наверное, самое простое решение.Помните, что строка является итеративной.

datalist = []
with open("data1.txt") as f:
    for line in f:
        line = line.replace(" ", "")
        line_list = list(line.strip())
        datalist.append(line_list)
0 голосов
/ 23 ноября 2018

list(string) выдаст вам список символов в строке.

Принимая data1.txt как

00000 0
00001 0
00010 0

, вы можете написать

with open('data1.txt') as f: 
    result = [list(line.strip().replace(' ', '')) for line in f] 

чтобы получить

>>> result                                                                 
[['0', '0', '0', '0', '0', '0'],
 ['0', '0', '0', '0', '1', '0'],
 ['0', '0', '0', '1', '0', '0']]
0 голосов
/ 23 ноября 2018

Это регулярное выражение будет работать:

import re
digits = "000001"
re.sub(r'([0-9])(?!$)', r'\1,', digits)

Вместо цифр выше просто пропустите каждую строку вашего файла

...