社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

python在两个字符之间替换一个字符并保持rest

Tony • 5 年前 • 1513 次点击  

我试图替换两个已知字符之间的逗号( § )

我的测试字符串: '§Bandra(West),Mumbai§'

预期产出: '§Bandra(West);Mumbai§'

re.sub(r'\§[^\,]+\,[^\,]+\§',r'\§[^\,]+\;[^\,]+\§', '§Bandra(West),Mumbai§') 

但那只是将正则表达式返回为字符串: \§[^\',']+\;[^\',']+\§

我在这里做错什么了?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/39613
 
1513 次点击  
文章 [ 2 ]  |  最新文章 5 年前
wjandrea
Reply   •   1 楼
wjandrea    5 年前

你想要正则表达式 ,用括号创建,然后用反斜杠和数字引用:

>>> re.sub(r'(§[^,]+),([^,]+§)', r'\1;\2', '§Bandra(West),Mumbai§')
'§Bandra(West);Mumbai§'

在这里 (§[^,]+) 对应于 \1 ([^,]+§) 对应于 \2 .

更多信息: re - Python documentation 在下面 (...) \number

顺便说一句:

  • 你有一堆不必要的睫毛,我去掉了。
  • 在这个特定的示例中,可以使用更简单的模式:

    >>> re.sub(r'(§.*),(.*§)', r'\1;\2', '§Bandra(West),Mumbai§')
    '§Bandra(West);Mumbai§'
    

    甚至一个简单的 .replace :

    >>> '§Bandra(West),Mumbai§'.replace(',', ';')
    '§Bandra(West);Mumbai§'
    
Emma
Reply   •   2 楼
Emma    5 年前

这个表情,

(§[^§\r\n]*),([^§\r\n]*§)

作为替代,

\1;\2

可能只是在这里工作。

试验

import re

string = """
§Bandra(West);Mumbai§
§Bandra(West),Mumbai§
§,§
Bandra(West),Mumbai§
"""

print(re.sub(r'(§[^§\r\n]*),([^§\r\n]*§)', r"\1;\2", string))

产量

§Bandra(West);Mumbai§
§Bandra(West);Mumbai§
§;§
Bandra(West),Mumbai§

如果您希望探索/简化/修改表达式,则 在的右上面板上解释 regex101.com . 如果你愿意,你 也可以观看 this link ,如何匹配 对照一些样本输入。