python:在每个子字符串后面的2个位置插入一个字符

2024-06-25 05:20:09 发布

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

我有一个字符串:'51.6251.8750.6951.4651.462626200',我想得到这样一个列表:['51.62', '51.87', '50.69', '51.46', '51.46', '2626200']

所以,基本上,在找到一个点之后,字符串应该被拆分2个位置

现在,我有以下内容,在这里我创建了一个所有点位置的列表,不确定是否是这样

import re

string = '51.6251.8750.6951.4651.462626200'

k = 2

# I couldn't find the position of the dot actually, so I had to replace for something first, it may be unecessary

subString = '-'

replacedString = re.sub('[.]', subString, string)

# create a list with all positions of the substring

subStringPosition = [i.start() for i in re.finditer(subString, replacedString)]

# add k to each element of the subStringPosition

subStringAfterK = [x + k for x in subStringPosition]

如果有人能帮助我,我将不胜感激


Tags: oftheto字符串inimportre列表
3条回答

对于不使用re的解决方案:

def split(s):
    nums = []
    while "." in s:
        i = s.find(".")
        n = s[:i+3]
        s = s[i+3:]
        nums.append(n)
    if s:
        nums.append(s)
    return nums

您可以使用:

# string = '51.6251.8750.6951.4651.462626200'
matches = re.split(r'(?<=\.\d{2})', string)

说明:

正向查找(?<=\.\d{2})

  • \.匹配字符.
  • \d{2}与一个数字精确匹配2次

结果:

#print(matches)
['51.62', '51.87', '50.69', '51.46', '51.46', '2626200']

您可以测试正则表达式^{}

您可以使用regex方法来实现这个结果splitfindall,其中\d{2}\.\d{2}的过期时间为2位,后跟一个。和另外两位数字。
findall中,它将返回所有的2个数字和后面的2个数字。在split[-1]中,它将返回字符串的其余部分

string = "51.6251.8750.6951.4651.462626200"
result = re.findall(r"\d{2}\.\d{2}", string)
result.append(re.split(r"\d{2}\.\d{2}", string)[-1])
print(result)

输出

['51.62', '51.87', '50.69', '51.46', '51.46', '2626200']

相关问题 更多 >