例如:
我的输入:
Input:
zxxxxyzzxyxyxyzxzzxzzzyzzxxxzxxyyyzxyxzyxyxyzyyyyzzyyyyzzxzxzyzzzzyxzxxxyxxxxyyzyyzyyyxzzzzyzxyzzyyy
--------
x y z
--------
A B
--------
A B
A 0.634 0.366
B 0.387 0.613
--------
x y z
A 0.532 0.226 0.241
B 0.457 0.192 0.351
Output:
AAAAAAAAAAAAAABBBBBBBBBBBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBAAA
现在我正在使用此:
import sys, re
data = []
for line in sys.stdin.readlines():
data.append(''.join(line.strip().split()))
cleanup = []
for i in range(len(data)):
cleanup.append(re.sub(r"\S+", " ", data[i]))
print(data)
我的输出看起来像这样:
['zxxxxyzzxyxyxyzxzzxzzzyzzxxxzxxyyyzxyxzyxyxyzyyyyzzyyyyzzxzxzyzzzzyxzxxxyxxxxyyzyyzyyyxzzzzyzxyzzyyy', '--------', 'xyz', '--------', 'AB', '--------', 'AB', 'A0.6340.366', 'B0.3870.613', '--------', 'xyz', 'A0.5320.2260.241', 'B0.4570.1920.351']
但是我想要我的数据列表是这样的:
print(data)
['zxxxxyzzxyxyxyzxzzxzzzyzzxxxzxxyyyzxyxzyxyxyzyyyyzzyyyyzzxzxzyzzzzyxzxxxyxxxxyyzyyzyyyxzzzzyzxyzzyyy', 'x', 'y', 'z', 'A', 'B', '0.634', '0.366', '0.387', '0.613', '0.532', '0.226', '0.241', '0.457', '0.192', '0.351']
答案 0 :(得分:3)
您几乎是正确的。您只需要不加入split()
结果。而是将data
split()
列表中
import sys, re
data = []
for line in sys.stdin.readlines():
for x in re.sub(r"[^a-zA-Z\d\s\.]", "", line).strip().split():
data.append(x)
print(data)
答案 1 :(得分:0)
您可以这样做...
rawLines = raw.split("\n")
data = {}
data["seq"] = rawLines[1]
data["mat1"] = {}
for k in [8,9]:
temp = rawLines[k].split("\t")
if(k==8):
data["mat1"]["A"] = {"A":float(temp[1]),"B":float(temp[2])}
else:
data["mat1"]["B"] = {"A":float(temp[1]),"B":float(temp[2])}
data["mat2"] = {}
for k in [14,15]:
temp = rawLines[k].split("\t")
if(k == 14):
data["mat2"]["A"]={"X":float(temp[1]),"Y":float(temp[2]),"Z":float(temp[3])}
elif(k == 15):
data["mat2"]["B"]={"X":float(temp[1]),"Y":float(temp[2]),"Z":float(temp[3])}