为了账号安全,请及时绑定邮箱和手机立即绑定

删除字符串中超过 1 个句点 - Python

删除字符串中超过 1 个句点 - Python

一只斗牛犬 2023-05-09 10:19:21
我有一个简单的字符串。在这个字符串中,我可以有任何数字。有时这个数字有 1 个以上的句点。我的目标是删除超过 1 个句点,所以如果我以 a 为例,它应该看起来像这样 = 20.00011。我怎样才能做到这一点?import rea = "20.00.0.11"a_replaced = re.sub(r'\.+', ".", a)print(a_replaced)
查看完整描述

3 回答

?
慕村225694

TA贡献1880条经验 获得超4个赞

尝试这个 -


a = "20.00.0.11"


t = a.split('.')  #breaks the item into token

t[0]+'.'+''.join(t[1:]) #join them back with a single .

'20.00011'

如果万一你有所有的可能性,你可能有多个 .'s 或一个或没有 .'s 那么你可以使用以下功能 -


a = "20.00.0.11"

b = "20.000"

c = "20000"


def fix_dots(a):

    t = a.split('.')

    if len(t)>1:

        return t[0]+'.'+''.join(t[1:])

    else:

        return t[0]

print(fix_dots(a))

#Output - '20.00011'


print(fix_dots(b))

#Output - '20.000'


print(fix_dots(c))

#Output - '20000'

解决此问题的列表理解方法是使用查找第一个点的位置,然后使用 OR 条件保留该点并忽略其他点。


a = "20.00.0.11"


def fix_dot2(a):

    return ''.join([i[1] for i in enumerate(a) if i[0]==a.find('.') or i[1]!='.'])


print(fix_dot2(a))

'20.00011'


查看完整回答
反对 回复 2023-05-09
?
LEATH

TA贡献1936条经验 获得超6个赞

"".join("20.00.0.11".replace(".","!",1).split(".")).replace("!",".")

或者:


string = "20.00.0.11"

dot = string.find(".")

"".join([x for (i, x) in enumerate(string) if (x != ".") | (i==dot)])


查看完整回答
反对 回复 2023-05-09
?
胡子哥哥

TA贡献1825条经验 获得超6个赞

另一种解决方案是按“.”拆分,并确保在列表的第二个索引处恰好添加一个。


a = "20.00.0.11"

lst = a.split('.')

lst.insert(1, '.')

a_replaced = ''.join(lst)


print(a_replaced)

>>> "20.00011"

使用此版本将为您提供更压缩的一行代码:


a = "20.00.0.11"

a_replaced = ''.join(a.split('.').insert(1, '.'))

此解决方案假定输入的第一个期间是您要保留的期间。


此外,如果输入中没有句点,则会在字符串末尾添加一个句点。如果你不想要这个,你需要添加一个 if check。


查看完整回答
反对 回复 2023-05-09
  • 3 回答
  • 0 关注
  • 111 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信