Разбить строку в текстовом файле на несколько столбцов для CSV

У меня есть обновление о токене Firebase Cloud Messaging, в котором я мог бы получить информацию.

Я действительно хотел узнать об этом изменении, поэтому просто отправил письмо в службу поддержки. Токен Firebase Cloud Messaging снова вернется к серверному ключу. Ничего не изменится. Мы снова увидим ключ сервера.

0
задан Ruturaj 31 March 2019 в 08:33
поделиться

3 ответа

В вашем случае вы можете сделать:

with open('test.txt','r') as inp:
    for f in inp.readlines():
        print(f.split())

Что печатает:

['node', 'name', '|', 'requested', 'bytes', '|', 'total', 'execution', 'time', '|', 'accelerator', 'execution', 'time', '|', 'cpu', 'execution', 'time']
['prefix/up23/conv2d_transpose', '37.75MB', '(100.00%,', '15.34%),', '150.71ms', '(100.00%,', '4.83%),', '0us', '(0.00%,', '0.00%),', '150.71ms', '(100.00%,', '4.83%)']
['prefix/up20/conv2d_transpose', '18.87MB', '(84.66%,', '7.67%),', '115.01ms', '(95.17%,', '3.68%),', '0us', '(0.00%,', '0.00%),', '115.01ms', '(95.17%,', '3.68%)']
['prefix/up17/conv2d_transpose', '18.87MB', '(76.99%,', '7.67%),', '91.43ms', '(91.49%,', '2.93%),', '0us', '(0.00%,', '0.00%),', '91.43ms', '(91.49%,', '2.93%)']
['prefix/fres19/conv_b_1x3/Conv2D', '2.10MB', '(69.33%,', '0.85%),', '46.41ms', '(88.56%,', '1.49%),', '0us', '(0.00%,', '0.00%),', '46.41ms', '(88.56%,', '1.49%)']
['prefix/fres5/conv_b_3x1/Conv2D', '2.10MB', '(68.47%,', '0.85%),', '44.63ms', '(87.07%,', '1.43%),', '0us', '(0.00%,', '0.00%),', '44.63ms', '(87.07%,', '1.43%)']
['prefix/fres6/conv_a_3x1/Conv2D', '2.10MB', '(67.62%,', '0.85%),', '40.19ms', '(85.64%,', '1.29%),', '0us', '(0.00%,', '0.00%),', '40.19ms', '(85.64%,', '1.29%)']
['prefix/fres22/conv_a_3x1/Conv2D', '2.10MB', '(66.77%,', '0.85%),', '39.97ms', '(84.36%,', '1.28%),', '0us', '(0.00%,', '0.00%),', '39.97ms', '(84.36%,', '1.28%)']
['prefix/fres21/conv_a_3x1/Conv2D', '2.10MB', '(65.92%,', '0.85%),', '38.85ms', '(83.08%,', '1.24%),', '0us', '(0.00%,', '0.00%),', '38.85ms', '(83.08%,', '1.24%)']

Это то, что вы хотите?

0
ответ дан Ruturaj 31 March 2019 в 08:33
поделиться

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

def remove_dangling_comma(content):
    if content[-1] == ',':
        return content[:-1]
    return content

data_columns = []
with open("words.txt", 'r') as f:
    for i, line in enumerate(f):
        if i == 0:
            continue  # skip header
        parts = line.split()
        node_name = parts[0]
        # concatenate broken parts of the same data and remove dangling commas, if any
        requested_bytes = remove_dangling_comma(' '.join([parts[1], parts[2], parts[3]]))
        total_time = remove_dangling_comma(' '.join([parts[4], parts[5], parts[6]]))
        accelerator_time = remove_dangling_comma(' '.join([parts[7], parts[8], parts[9]]))
        cpu_time = remove_dangling_comma(' '.join([parts[10], parts[11], parts[12]]))

        # append the processed data to the list
        data_columns.append([node_name, requested_bytes, total_time, accelerator_time, cpu_time])       

    print(data_columns)

Вывод:

[
    ['prefix/up20/conv2d_transpose', '18.87MB (84.66%, 7.67%)', '115.01ms (95.17%, 3.68%)', '0us (0.00%, 0.00%)', '115.01ms (95.17%, 3.68%)'],
    ['prefix/up17/conv2d_transpose', '18.87MB (76.99%, 7.67%)', '91.43ms (91.49%, 2.93%)', '0us (0.00%, 0.00%)', '91.43ms (91.49%, 2.93%)'], 
    ['prefix/fres19/conv_b_1x3/Conv2D', '2.10MB (69.33%, 0.85%)', '46.41ms (88.56%, 1.49%)', '0us (0.00%, 0.00%)', '46.41ms (88.56%, 1.49%)'], 
    ['prefix/fres5/conv_b_3x1/Conv2D', '2.10MB (68.47%, 0.85%)', '44.63ms (87.07%, 1.43%)', '0us (0.00%, 0.00%)', '44.63ms (87.07%, 1.43%)'],
    ['prefix/fres6/conv_a_3x1/Conv2D', '2.10MB (67.62%, 0.85%)', '40.19ms (85.64%, 1.29%)', '0us (0.00%, 0.00%)', '40.19ms (85.64%, 1.29%)'], 
    ['prefix/fres22/conv_a_3x1/Conv2D', '2.10MB (66.77%, 0.85%)', '39.97ms (84.36%, 1.28%)', '0us (0.00%, 0.00%)', '39.97ms (84.36%, 1.28%)'], 
    ['prefix/fres21/conv_a_3x1/Conv2D', '2.10MB (65.92%, 0.85%)', '38.85ms (83.08%, 1.24%)', '0us (0.00%, 0.00%)', '38.85ms (83.08%, 1.24%)']
]
0
ответ дан Luca Bezerra 31 March 2019 в 08:33
поделиться

Вы можете использовать:

with open('file.txt','r') as inp: 
        arr = []
        for f in inp: 
           arr.append(f)
b = arr[514]
c = b.split()

Также, если вы хотите придерживаться своего кода, вы можете удалить пустой элемент из списка, используя

Output = [x for x in c if x]
0
ответ дан Jeffin Sam 31 March 2019 в 08:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: