当且仅当特定字符使用Python连续重复时,如何移除该字符?

2024-10-11 16:29:57 发布

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

我在下面提供了我的问题的详细版本:

考虑字符串"apples----are-the--best---fruits",我只想删除连续重复的所有'-'。所以我的输出应该是“苹果是最好的水果”

我怎样才能做到这一点?谢谢


Tags: the字符串苹果版本arebestfruitsapples
3条回答

另一种方法是迭代输入字符串,并使用如下计数器检查每个字符-是否与另一个字符-连续:

def convertString(inString):
    newString = []
    counter = 0

    for letter in inString:
        if letter == '-':
            if counter > 0:
                continue
            else:
                newString.append(letter)
                counter = counter + 1
        else:
            newString.append(letter)
            counter = 0

    return "".join(newString)

inString = "apples  are-the best -fruits"
newString = convertString(inString)
print(newString)

输出:

apples-are-the-best-fruits

检查这是否有帮助-

'-'.join([i for i in x.split("-") if i])

其中x是您的string

实现目标的不同方法。使用string.replace是最糟糕的方法,因为会创建很多中间字符串(它们是不可变的)并将其丢弃

# string replace - inefficient due to lots of strings created
orgstring = "apples  are-the best -fruits"

mystring =  orgstring 
while ' ' in mystring: 
    mystring = mystring.replace(' ','-')
print (mystring)

最好采用以下两种方法之一:使用列表收集所有需要的字符或使用regex解决:

orgstring = "apples  are-the best -fruits"

# list iterating appending unless its a duplicate -
mystring = ""
mylist = []
for c in orgstring:
    if not mylist or mylist[-1] != '-' or c != '-':
        mylist.append(c)

mystring = ''.join(mylist)
print(mystring)

# regex replacement of more then 1 - by only 1 -
import re
mystring = ""
mystring = re.sub("-+","-",orgstring)
print(mystring)

输出:

apples-are-the-best-fruits
apples-are-the-best-fruits
apples-are-the-best-fruits

相关问题 更多 >

    热门问题