Python将多行数组放入一行

时间:2018-06-02 23:12:02

标签: python

我有一个包含以下数据的文本文件:

array([[a, b, c, d, e,  
       f, g, h, i, j],  
       [k, l, m, n, o,     
       p, q, r, s, t],   
       [u, v, w, x, y,   
       z, 0, 1, 2, 3]])

使用python我需要每个括号中的文本为单行,如:

a b c d e f g h i j 
k l m n o p q r s t  
u v w x y z 0 1 2 3 

请问任何建议?

1 个答案:

答案 0 :(得分:0)

我认为你在描述这个问题方面并不是最好的工作,我不清楚为什么你有这样的文件(我猜大多数人都假设你在python中有一个现有的数组)包含一个数组定义就像它被写了一样对于已设置变量的特定语言,而不是带有qouted字符串等的数据馈送。

尽管如此,只要您拥有这些简单的值,您就可以使用RegExp和JSON在几个步骤内完成此操作。下面的脚本(参见https://repl.it/repls/MarvelousMuddyQuadrants的在线演示)一步一步地向您展示如何清理数据并使其成为JSON字符串,然后可以使用python的json模块加载。

import re
import json

# GC is done by Python, no need for file.close()
string = open('input.txt').read() 
# Remove the array declaration start
string = re.sub(r"^array\(", '', string)
# Remove the array end declaration
string = re.sub(r"\)$", '', string)
# Remove all whitespaces and newlines
string = re.sub(r"\s*|\n*", '', string)
# Quote all strings and numbers
string = re.sub(r"([a-zA-Z0-9]+)", r'"\1"', string)
# Should be good enough now to be read with json.loads
mainlist = json.loads(string)

print(
  "\n".join([" ".join(sublist) for sublist in mainlist])
)