首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python字符串按模板拆分

Python字符串按模板拆分
EN

Stack Overflow用户
提问于 2016-12-18 10:30:32
回答 4查看 523关注 0票数 0

我是Python的新手,对你们所有人来说这可能是个很简单的问题,也许你可以帮我

基本上,我需要一个函数来读取一个连续字符串并按如下方式拆分它:前5个字符,插入逗号,接下来的6个字符,插入逗号,接下来的6个字符,插入逗号,插入新行,然后重复

问题是:我的字符串是:

代码语言:javascript
复制
"CARMD000000000003FEFFE000004000004BCCXT000009000025BBT01000035000025"

我需要通过以下规则将这个字符串划分为逗号:5-6-6 \n

预期结果:

代码语言:javascript
复制
CARMD,000000,000003, 

FEFFE,000004,000004, 

BCCXT,000009,000025,

BBT01,000035,000025,

谢谢你的帮助。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2016-12-18 10:38:04

代码语言:javascript
复制
import re

text = "CARMD000000000003FEFFE000004000004BCCXT000009000025BBT01000035000025"
match = re.findall(r'([A-Z]{5})(\d{6})(\d{6})', text)
lines = [','.join(item) for item in match]
print(*lines, sep='\n')

退出:

代码语言:javascript
复制
CARMD,000000,000003
FEFFE,000004,000004
BCCXT,000009,000025

使用regex匹配文本,将返回一个元组列表:

代码语言:javascript
复制
[('CARMD', '000000', '000003'), ('FEFFE', '000004', '000004'), ('BCCXT', '000009', '000025')]

而不是使用列表理解来构造列表,列表中的每个元素都是字符串,由使用','的元组连接。

台词:

代码语言:javascript
复制
['CARMD,000000,000003', 'FEFFE,000004,000004', 'BCCXT,000009,000025']
票数 1
EN

Stack Overflow用户

发布于 2016-12-18 10:44:42

使用re.findall()str.join()函数的“单行”解决方案:

代码语言:javascript
复制
s = "CARMD000000000003FEFFE000004000004BCCXT000009000025BBT01000035000025"
chunks = ',\n'.join(','.join(t) for t in re.findall(r'(\w{5})(\w{6})(\w{6})', s))

print(chunks)

产出:

代码语言:javascript
复制
CARMD,000000,000003,
FEFFE,000004,000004,
BCCXT,000009,000025,
BBT01,000035,000025
票数 1
EN

Stack Overflow用户

发布于 2016-12-18 10:53:00

使用regex的另一种方法是使用列表切片和如下所示的for循环:

代码语言:javascript
复制
>>> s = 'CARMD000000000003FEFFE000004000004BCCXT000009000025BBT01000035000025'
>>> 
>>> for i in range(len(s) / 17):
...     temp = s[i*17:i*17+17]
...     print '{}, {}, {},'.format(temp[:5], temp[5:11], temp[11:17])
...
CARMD, 000000, 000003,
FEFFE, 000004, 000004,
BCCXT, 000009, 000025,
BBT01, 000035, 000025,
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41207459

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档