
[英]Reading data from large text file with strings and floats in Python
[英]Best way to get just strings, integers, and/or floats from a data file in python?
例如:
我的输入:
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']
你几乎是对的。 您只需要不重新加入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)
你可以这样
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])}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.