簡體   English   中英

re.sub()不區分大小寫的正則表達式模式的問題

[英]Issue with case-insensitive regex pattern for re.sub()

我正在使用Python中的正則表達式進行字典操作。我想從字典項中刪除1dc.com1DC.com1dc.COM1DC.COM

范例字典-

{'system_name': 'a1pvdb092', 'fdc_inv_sa_team': 'X2AIX_GBS'}
{'system_name': 'W00000001.1DC.com', 'fdc_inv_sa_team': 'LAA.BRAZIL.AAA.WINDOWS\n'}
{'system_name': 'a10000048', 'fdc_inv_sa_team': 'X2AIX_NSS'}
{'system_name': 'a10000049', 'fdc_inv_sa_team': 'X2AIX_NSS'}

預期產出-

['a1pvdb092']
['W00000001']
['a10000048']
['a10000049']

劇本-

import re
from opswareConnect import data

for row in data:
    arg1 = [row["system_name"],]
    arg1 = re.sub('[.1DC.com]\\b', '', str(arg1))
    print arg1

腳本的輸出-

['a1pvdb092']
['WBPVAP001Dco']
['a10000048']
['a10000049']

正則表達式

正則表達式為\\.1dc\\.com 反斜杠轉義了通常與任何字符匹配而不僅僅是句點的點。

使用re.IGNORECASE標志使搜索不區分大小寫。

使用re.sub()查找並消除目標表達式。

完整解決方案

import re

data = [
    {'system_name': 'a1pvdb092', 'fdc_inv_sa_team': 'X2AIX_GBS'},
    {'system_name': 'W00000001.1DC.com', 'fdc_inv_sa_team': 'LAA.BRAZIL.AAA.WINDOWS\n'},
    {'system_name': 'a10000048', 'fdc_inv_sa_team': 'X2AIX_NSS'},
    {'system_name': 'a10000049', 'fdc_inv_sa_team': 'X2AIX_NSS'},
]

for row in data:
    sysname = row['system_name']
    print([re.sub(r'\.1dc\.com', '', sysname, flags=re.IGNORECASE)])

產量

['a1pvdb092']
['W00000001']
['a10000048']
['a10000049']

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM