查找子字符串之间的整数将不同的子字符串插入原始字符串

问题描述 投票:0回答:1

我从 CBOE 网站上抓取了一些数据,但不确定如何在数字字符串中插入一个空格,其中一个数字应该结束,下一个数字应该开始。

示例字符串之前:

INDEX OPTIONS 737,331772,5901,509,921OPEN INTEREST11,679,58614,443,59626,123,182
EXCHANGE TRADED PRODUCTS 219,972414,850634,822OPEN INTEREST38,012,42956,691,67594,704,104

尝试循环遍历字符串,并找到所有情况

  1. 逗号之间有 4、5 或 6 个整数
  2. 如果有,则在第三个整数后面插入一个空格 源字符串

答案示例字符串:

INDEX OPTIONS 737,331 772,590 1,509,921OPEN INTEREST11,679,586 14,443,596 26,123,182
EXCHANGE TRADED PRODUCTS 219,972 414,850 634,822OPEN INTEREST38,012,429 56,691,675 94,704,104

在这里苦苦挣扎,使用嵌套的 while 循环和语句以及替换语句,我无法想象一个将带有空格的完成字符串解析为数据帧的解决方案。

python nested-loops
1个回答
0
投票

如果您假设原始字符串的标记恰好由一个逗号或一个空白字符(可能是空格)分隔,那么您可以从用逗号分割源字符串开始。

然后,对于每个标记,按空格分割并检查这些新标记。如果标记表示整数且长度为 4、5 或 6,则可以对字符串进行切片以插入空格。

然后你只需要再次将所有东西连接在一起即可。

例如:

a = "INDEX OPTIONS 737,331772,5901,509,921OPEN INTEREST11,679,58614,443,59626,123,182 EXCHANGE TRADED PRODUCTS 219,972414,850634,822OPEN INTEREST38,012,42956,691,67594,704,104"

tokens = a.split(",")
for k, token in enumerate(tokens):
    parts = token.split()
    for i, part in enumerate(parts):
        if part.isdecimal() and len(part) in {4, 5, 6}:
            parts[i] = f"{part[:3]} {part[3:]}" # type: ignore
    tokens[k] = " ".join(parts)
result = ",".join(tokens)
print(result)

输出:

INDEX OPTIONS 737,331 772,590 1,509,921OPEN INTEREST11,679,586 14,443,596 26,123,182 EXCHANGE TRADED PRODUCTS 219,972 414,850 634,822OPEN INTEREST38,012,429 56,691,675 94,704,104
© www.soinside.com 2019 - 2024. All rights reserved.