首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用python替换“=”符号时遇到整数

使用python替换“=”符号时遇到整数
EN

Stack Overflow用户
提问于 2021-05-11 20:12:40
回答 1查看 43关注 0票数 1

你好,我对python和regex很陌生。我有一个字符串,我想重新格式化/替换

代码语言:javascript
复制
string = '1John Radcliffe Hospital/Oxford/United Kingdom, 11Ruhr-Universität 
3/Bochum/Bochum/Germany, 3University of British Columbia/Vancouver/Canada, 4National 
Institute of Neuroscience, National Center of Neurology and Psychiatry/Tokyo/Japan, 
5University of Catania/Catania/Italy, 6F. Hoffmann-La Roche Ltd/Basel/Switzerland, 7 
University of Colorado School of Medicine/Aurora/United States of America'

我确实试过:

代码语言:javascript
复制
re.sub('(, \d+()?)', r'\1=', string).strip()

预期产出:

代码语言:javascript
复制
string = '1=John Radcliffe Hospital/Oxford/United Kingdom, 11=Ruhr-Universität 
3/Bochum/Bochum/Germany, 3=University of British Columbia/Vancouver/Canada, 4=National 
Institute of Neuroscience, National Center of Neurology and Psychiatry/Tokyo/Japan, 
5=University of Catania/Catania/Italy, 6=F. Hoffmann-La Roche Ltd/Basel/Switzerland, 
7=University of Colorado School of Medicine/Aurora/United States of America'
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-11 20:16:19

您可以在不使用捕获组的情况下匹配字符串的开头,也可以匹配空格和逗号,并且在匹配单个数字后不能断言一个数字。

代码语言:javascript
复制
(?:^|, )\d+(?!/)

模式匹配

  • (?:^|, )非捕获组,断言字符串的开始或修补程序,
  • \d+(?!/)匹配1+位数,而不是直接向右断言/

Regex演示 x- Python演示

在替换中,使用完全匹配,后面跟着等号

代码语言:javascript
复制
\g<0>=

示例

代码语言:javascript
复制
import re

string = ("1John Radcliffe Hospital/Oxford/United Kingdom, 11Ruhr-Universität \n"
          "3/Bochum/Bochum/Germany, 3University of British Columbia/Vancouver/Canada, 4National \n"
          "Institute of Neuroscience, National Center of Neurology and Psychiatry/Tokyo/Japan, \n"
          "5University of Catania/Catania/Italy, 6F. Hoffmann-La Roche Ltd/Basel/Switzerland, 7 \n"
          "University of Colorado School of Medicine/Aurora/United States of America")

result = re.sub(r'(?:^|, )\d+(?!/)', r'\g<0>=', string, 0, re.MULTILINE).strip()
print(result)

输出

代码语言:javascript
复制
1=John Radcliffe Hospital/Oxford/United Kingdom, 11=Ruhr-Universität 
3/Bochum/Bochum/Germany, 3=University of British Columbia/Vancouver/Canada, 4=National 
Institute of Neuroscience, National Center of Neurology and Psychiatry/Tokyo/Japan, 
5=University of Catania/Catania/Italy, 6=F. Hoffmann-La Roche Ltd/Basel/Switzerland, 7= 
University of Colorado School of Medicine/Aurora/United States of America

另一个选项可能是在匹配一个数字之后,使用正前瞻来断言大写字符[A-Z]

代码语言:javascript
复制
(?:^|, )\d+(?=\s*[A-Z])

Regex演示

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67493741

复制
相关文章

相似问题

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