我正在读取一行文本数据,我想将该行拆分为一个值列表。例如,该行有四个数字,每个数字分配 5 个空格,因此如果数字为 18、295、-9999 和 1780,则原始行将如下所示(^ 字符表示行的开始和结束,不包括在内在实际输入数据中):
^ 18 295-9999 1780^
我想将该行拆分为其实际组件值的列表:
[18, 295, -9999, 1780]
我知道列表应该包含的值的数量(在上面的例子中是 4),而且我确切地知道每个值在字符串中占用多少空间(在上面的例子中是 5)。我可以创建一个循环来执行此拆分,如下所示:
values = []
for i in range(4):
values.append(line[i*5:5])
是否有更有效或更“Pythonic”的方式来做到这一点?
预先感谢您的帮助。
最佳答案
使用切片...
>>> [int(s[i:i+5]) for i in xrange(0, len(s), 5)]
[18, 295, -9999, 1780]
或者 - 如果你真的想要,有些人会发现 re
更具可读性......(只是把它作为替代引用 - 不要开枪!)
>>> map(int, re.findall('.{5}', s))
[18, 295, -9999, 1780]
关于Python:如何将特定数量字符的字符串切片到列表中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13182185/