Python 计数子串

标签 python string count numbers substring

如何找到子字符串在字符串中出现了多少次? 我有分子式,如果字母是大写它是一个元素(例如 H),如果它有第一个大写字母和第二个小写字母而不是一个元素(例如 Ba),如果元素后有数字我必须添加那个数字到元素

示例:输入:Ba4H2Ba5Li3

如果我搜索 Ba 它应该打印数字 9(我有 Ba4 和 Ba5,即 9),如果我搜索 H 它应该打印 2(一个字母 H 但后面是数字 2),而 Li 它应该打印数字 3 .

最佳答案

你可以像这样使用正则表达式

data = "Ba4H2Ba5Li3"
import re
result = {}
for element, count in re.findall(r"([A-Z][a-z]?)(\d*)", data):
    result[element] = result.get(element, 0) + int(1 if count == "" else count)
print result
# {'H': 2, 'Ba': 9, 'Li': 3}

现在,您可以从result 中获取每个项目的计数,如下所示

print result.get("Ba", 0)
# 9
print result.get("H", 0)
# 2
print result.get("Li", 0)
# 3
print result.get("Sa", 0)
# 0

关于Python 计数子串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22432110/

相关文章:

C++ std::vector<std::string> 迭代器段错误

mysql - 如何获取mySql数据库中的行数

python - Numba parallel 在 for 循环中导致不正确的结果,我无法查明问题所在

python - 扩展 Python 模板字符串

java - += 比 concat 更有效吗?

mysql - COUNT 返回的值多于提取实际结果时的值

mysql - SQL查询返回销售额和销售人员数量

python - 通过索引号引用字典元素

python - 类型错误 : reverse() takes exactly 2 arguments (1 given)

javascript - 将 HTML 字符串解析为 DOM 并将其转换回字符串