从字符串中的某个字符删除一行中的多个字符



我想在Python中将一行中的多个'.'删除为单个'.'

这是我的代码,我想出来的:

# remove multiple occurrences of '.'
string = "FOO...BAR......FOO..BAR.FOO"
last_char = None
new_string = ""
for char in string:
    if not (last_char == '.' and char == '.'):
        new_string += char
    last_char = char
string = new_string
print(string)

,它确实在做我想要它做的事情,但我认为必须有一个更优雅的方式来做到这一点。

>>> FOO.BAR.FOO.BAR.FOO

使用模式".+"的regex (re模块)更容易做到,这意味着

  • a点.
  • 在1到无限次之间重复+
import re
string = "FOO...BAR......FOO..BAR.FOO"
string = re.sub(r".+", '.', string)
print(string)  # FOO.BAR.FOO.BAR.FOO

或者只是用一个点替换所有的2个点,直到没有更多的2个点在一起

string = "FOO...BAR......FOO..BAR.FOO"
while string.find('..') >= 0:
    string = string.replace("..", ".")
print(string)  # FOO.BAR.FOO.BAR.FOO
string = "FOO...BAR......FOO..BAR.FOO"
print (".".join([x for x in string.split(".") if x]))

输出:

FOO.BAR.FOO.BAR.FOO

在任意给定的字符处拆分,如果列表元素不为空,并使用相同的给定字符作为分隔符,则连接回string。因此,您将所有多次出现的给定字符替换为单个字符。

Step by Step:

string = "FOO...BAR......FOO..BAR.FOO"
print ([x for x in string.split(".")])
print ([x for x in string.split(".") if x])
print (".".join([x for x in string.split(".") if x]))

输出:

['FOO', '', '', 'BAR', '', '', '', '', '', 'FOO', '', 'BAR', 'FOO']
['FOO', 'BAR', 'FOO', 'BAR', 'FOO']
FOO.BAR.FOO.BAR.FOO

相关内容

  • 没有找到相关文章

最新更新