如何将文本文件转换为python列表形式

时间:2019-03-23 15:17:29

标签: python list sed

我正在尝试将文本文件中的数字列表转换为python列表形式。例如,我想做

1
2
3
4
5

进入

[1,2,3,4,5]

我发现在使用sed的另一篇文章中几乎可以奏效的东西。

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

但这并没有删除每个数字之后的新行。我如何修改此sed命令以使其执行我想要的操作。同样,也将理解对sed命令的组件的解释。谢谢

4 个答案:

答案 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]