Art*_*owy 2 c++ python input stream
是否有一种pythonic方式的阅读 - 比如说 - 混合整数和字符输入而不是一次读取整个输入而不用担心换行?例如,我有一个文件,其中包含空格分隔的数据,我只知道有x个整数,然后是y个字符,然后是更多的整数.我不想假设有关换行的任何内容.
我的意思是像C++中的以下内容一样无意识:
...
int i, buf;
char cbuf;
vector<int> X, Z;
vector<int> Y;
for (i = 0; i < x; i++) {
cin >> buf;
X.push_back(buf);
}
for (i = 0; i < y; i++) {
cin >> cbuf;
Y.push_back(cbuf);
}
for (i = 0; i < z; i++) {
cin >> buf;
Z.push_back(buf);
}
Run Code Online (Sandbox Code Playgroud)
编辑:我忘了说我希望它在控制台的实时输入下表现良好 - 即在获取令牌之前不需要按ctrl + d并且该功能应该能够尽快返回它们行已输入.:)
小智 6
如何返回一个令牌流的小型生成器函数,其行为如下cin:
def read_tokens(f):
for line in f:
for token in line.split():
yield token
x = y = z = 5 # for simplicity: 5 ints, 5 char tokens, 5 ints
f = open('data.txt', 'r')
tokens = read_tokens(f)
X = []
for i in xrange(x):
X.append(int(tokens.next()))
Y = []
for i in xrange(y):
Y.append(tokens.next())
Z = []
for i in xrange(z):
Z.append(int(tokens.next()))
Run Code Online (Sandbox Code Playgroud)