首页 > 解决方案 > 如何根据字符串长度将一列拆分为多列?

问题描述

我是一个编程新手,所以请原谅这个基本问题。

我有一个 csv 文件,其中每条记录只是一个没有分隔符的长字符串,例如“A01BC234”。我想将其拆分为 4 个单独的列,如下所示:“A”、“01”、“BC”、“234”。每条记录都有相同的字符串长度,我需要在同一个地方拆分它:即在上面的例子中,第 1 列将始终有 1 个字符,第 2 列将有 2,第 3 列将有 2,第 4 列将有 3 .

有没有一种简单的方法可以用 python 中的函数来做到这一点?我查找了 的文档split(),但看起来需要一个分隔符。

标签: pythonstringsplit

解决方案


re.findall功能在这里派上用场:

row = 'A01BC234'
parts = re.findall(r'([A-Z])([0-9]{2})([A-Z]{2})([0-9]{3})', row)
print(parts)

这将打印以下元组(在元素列表中):

[('A', '01', 'BC', '234')]

编辑:

我们也可以使用字符串切片来完成相同的结果:

x = 'A01BC234'
parts = [x[:1], x[1:3], x[3:5], x[5:]]
print(parts)  # ['A', '01', 'BC', '234']

这可能优于正则表达式版本,因为它仅依赖于基本字符串函数。


推荐阅读