正则表达式取代单一delimi

2024-05-15 02:49:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在字符串“-”中找到一个限制器。问题是可能会出现其他“-”的情况,这使得正则表达式更加复杂

a-b
a - b
a-b - c-d
-a-b- - -c-d-

结果应该是

a - b
a - b
a b - c d
a b - c d

只有一个“-”分隔符。 要用空格替换的其他连字符。你知道吗

import re

def clean_delimter(s):
  regx = re.sub(r"(\s?-\s?)", " - ", s)
  print regx
  return regx

myList = [
"a-b",
"a - b",
"a-b - c-d",
"-a-b- - -c-d-"
]

for i in range(0, len(myList)):
  clean_delimter(myList[i])

我的正则表达式改变了所有连字符,这不是我想要的。但我不知道怎么告诉雷格怎么找

\s*-|\s*-\s*|-\s*

然后查找其他出现的“-”,将其更改为“”


Tags: 字符串importrecleanreturndef情况字符
1条回答
网友
1楼 · 发布于 2024-05-15 02:49:55

因为数据是对称的,所以可以不用正则表达式:

result = []
with open('data', 'r') as f:
    for line in f:
        line = line.strip()
        if line.count('-') > 1:
            n = (line.count('-')  -1) // 2
            line = line.replace('-',' ', n)
            #reverse
            line = line[::-1]
            line = line.replace('-',' ', n)
            # reverse to the original order
            line = line[::-1]
            line = re.sub(r'\s+',r' ', line)
            result.append(line)
        else:
            result.append(line)

for line in result:
    print(line)

a-b
a - b
a b - c d
a b - c d

相关问题 更多 >

    热门问题