我有一个包含以下数据的文本文件:
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
请问任何建议?
答案 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])
)