我想阅读一些Python中的格式化数据。该数据的格式类似于这样:阅读Python中的格式化多行
00:00:00
1 1 1
1 1 1
1 1 1
00:00:02
3 3 3
3 3 3
3 3 3
我能成功地模拟在C/C阅读++使用正向代码:
int main()
{
string hour;
int x0,y0,z0, x1,y1,z1, x2,y2,z2;
while(cin >> hour)
{
scanf("%d %d %d\n%d %d %d\n%d %d %d\n", &x0, &y0, &z0, &x1, &y1, &z1, &x2, &y2, &z2);
cout << hour << endl; //check the reading
}
return 0;
}
的问题是,我不能找到一些Python的方法它可以像scanf一样简单地读取格式化的多行字符串。一些来自np.genfromtxt的例子已经接近需要的,有些例子来自struct.unpack,但是我的技能还不足以使它适用于多行。 我大概可以在一些readline中使用split()来获得格式化的数据,但是这使我坚信C/C++中的程序比Python中的更简单。有没有什么办法可以做类似Python中的C/C++代码?
这里是Joril的帮助后回答:
from scanf import sscanf
import sys
data = ''
for line in sys.stdin:
if line != '\n':
data += line
else:
print sscanf(data, "%s\n%d %d %d\n%d %d %d\n%d %d %d\n")
data = ''
而作为输出我得到的东西,如:
('00:00:00', 1, 1, 1, 1, 1, 1, 1, 1, 1)
('00:00:02', 3, 3, 3, 3, 3, 3, 3, 3, 3)
工作就像一个魅力!非常感谢! – Ziul