Python:如何将特定数量字符的字符串切片到列表中?

标签 python slice

我正在读取一行文本数据,我想将该行拆分为一个值列表。例如,该行有四个数字,每个数字分配 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/

相关文章:

python - 无法在Python中使用youtube API v3下载视频字幕

dictionary - Go中的 map 初始化

go - 添加 []bytes 追加 slice []bytes

ruby-on-rails - 清除某个字符后的字符串

xml - Paraview 的 Xdmf : select elements from a DataItem

Python - 导入模块的文件名不同?

python - 将 numpy.matrix 转换为 C 双指针的正确方法

python - YouTube API nextPageToken返回不可用的结果

python - 从字典中查找值和键并验证它们

html - 显示一定长度的字符串而不截断