Как превратить текстовый файл в форму списка Python - PullRequest
0 голосов
/ 23 марта 2019

Я пытаюсь превратить список чисел в текстовом файле в форму списка Python. Например, я хочу сделать

1
2
3
4
5

в

[1,2,3,4,5]

Я нашел кое-что, что почти сработало в другом посте, используя sed.

sed '1s/^/[/;$!s/$/,/;$s/$/]/' file

но это не удаляло новую строку после каждого числа. Как я могу изменить эту команду sed, чтобы заставить ее делать то, что я хочу. Кроме того, объяснение компонентов команды sed также приветствуется. Спасибо

Ответы [ 4 ]

1 голос
/ 24 марта 2019

С GNU sed для -z, чтобы прочитать весь файл сразу:

sed -z 's/\n/,/g; s/^/[/; s/,$/]\n/' file
[1,2,3,4,5]

С любым awk в любой оболочке на любом компьютере UNIX:

$ awk '{printf "%s%s", (NR>1 ? "," : "["), $0} END{print "]"}' file
[1,2,3,4,5]
0 голосов
/ 23 марта 2019

Вы можете добавить все строки в пространство шаблона перед выполнением подстановок:

sed ':a;N;$!ba;s/\n/,/g;s/^/\[/;s/$/\]/' file

Это выводит:

[1,2,3,4,5]
0 голосов
/ 24 марта 2019

Это может сработать для вас (GNU sed):

sed '1h;1!H;$!d;x;s/\n/,/g;s/.*/[&]/' file

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

0 голосов
/ 23 марта 2019

Если вам нужен список, использующий python, простая реализация -

with open('./num.txt') as f:
    num = [int(line) for line in f]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...