Я пытаюсь превратить список чисел в текстовом файле в форму списка Python. Например, я хочу сделать
1 2 3 4 5
в
[1,2,3,4,5]
Я нашел кое-что, что почти сработало в другом посте, используя sed.
sed '1s/^/[/;$!s/$/,/;$s/$/]/' file
но это не удаляло новую строку после каждого числа. Как я могу изменить эту команду sed, чтобы заставить ее делать то, что я хочу. Кроме того, объяснение компонентов команды sed также приветствуется. Спасибо
С GNU sed для -z, чтобы прочитать весь файл сразу:
-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]
Вы можете добавить все строки в пространство шаблона перед выполнением подстановок:
sed ':a;N;$!ba;s/\n/,/g;s/^/\[/;s/$/\]/' file
Это выводит:
Это может сработать для вас (GNU sed):
sed '1h;1!H;$!d;x;s/\n/,/g;s/.*/[&]/' file
Скопируйте первую строку в область удержания, добавьте копии последующих строк и удалите оригиналы.В конце файла перейдите в область удержания, замените символы новой строки запятыми и оставьте строку в квадратных скобках.
Если вам нужен список, использующий python, простая реализация -
with open('./num.txt') as f: num = [int(line) for line in f]