我正在尝试将文本文件中的数字列表转换为python列表形式。例如,我想做
1
2
3
4
5
进入
[1,2,3,4,5]
我发现在使用sed的另一篇文章中几乎可以奏效的东西。
sed '1s/^/[/;$!s/$/,/;$s/$/]/' file
但这并没有删除每个数字之后的新行。我如何修改此sed命令以使其执行我想要的操作。同样,也将理解对sed命令的组件的解释。谢谢
答案 0 :(得分:1)
使用GNU sed -z
一次读取整个文件:
sed -z 's/\n/,/g; s/^/[/; s/,$/]\n/' file
[1,2,3,4,5]
在任何UNIX盒子上的任何外壳中都有任何awk:
$ awk '{printf "%s%s", (NR>1 ? "," : "["), $0} END{print "]"}' file
[1,2,3,4,5]
答案 1 :(得分:0)
您可以在执行替换之前先将所有行附加到模式空间中
sed ':a;N;$!ba;s/\n/,/g;s/^/\[/;s/$/\]/' file
这将输出:
[1,2,3,4,5]
答案 2 :(得分:0)
这可能对您有用(GNU sed):
sed '1h;1!H;$!d;x;s/\n/,/g;s/.*/[&]/' file
将第一行复制到保留空间,添加后续行的副本并删除原始行。在文件末尾,交换到保留空间,用逗号替换换行符,并用方括号将其余字符串括起来。
答案 3 :(得分:-1)
如果要使用python列表,一个简单的实现是
with open('./num.txt') as f:
num = [int(line) for line in f]