You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Python正则表达式问题:如何在数字与性别标识间添加逗号?

解决在数字与性别标识间添加逗号的正则问题

嘿,我来帮你搞定这个正则调整的问题!先明确下你的需求:

输入文本:Adam, 30 M, Husband
期望输出:Adam, 30, M, Husband,

你之前写的正则re.sub(r'\b(\d{1,2}\s\w{1},)\b', r'\1,', text)其实方向偏了——它是在匹配「数字+空格+单个字母+逗号」这个整体后,再额外加个逗号,这可不是我们要的效果。咱们真正要做的是在数字(30)和后面的单个字母(M)之间插入逗号

给你两个实用的实现方案:

方案一:通用匹配数字+空格+单个字母的场景

这个方案适合大多数类似的格式调整,不管后面的字母是不是性别标识,都能把数字和字母之间的空格换成「逗号+空格」:

import re

text = "Adam, 30 M, Husband"
# 替换数字与字母间的空格为 ", "
adjusted_text = re.sub(r'(\d+)\s(\w)', r'\1, \2', text)
# 如果需要给末尾也加逗号,再补一步
final_text = adjusted_text + ','

print(final_text)  # 输出:Adam, 30, M, Husband,

方案二:精准匹配性别标识(M/F)的场景

如果你只想针对性别相关的单个字母(比如M/F)做调整,避免误匹配其他数字+空格+字母的情况,可以用正向预查来限定范围:

import re

text = "Adam, 30 M, Husband"
# 只匹配数字后接空格、M/F且后面跟着逗号的情况
adjusted_text = re.sub(r'(\d+)\s([MF])(?=,)', r'\1, \2', text)
final_text = adjusted_text + ','

print(final_text)  # 输出:Adam, 30, M, Husband,

内容的提问来源于stack exchange,提问作者Rohit Girdhar

火山引擎 最新活动