Python:从非分隔字符串中获取数字。使用正则表达式?

贾森于

我正在使用 python 将化学式转换为元素的比例。

例如:我有一个["Ti5Cu3", "TiCu2", "Ti2Cu3"]作为输入列表的列表,并希望将其转换为[5/(5+3), 1/(1+2), 2/(2+3)].

如何获取元素标记后面的数字?我认为那个re图书馆可能有用?以及如何使用它来解决我的问题?

我现在的解决办法是:

def formula2por(s):                             
    if s == "Ti":       
        return 1
    elseif s == "Cu":
        return 0
    else:                                       
        t = re.match(r'Ti(.*)Cu(.*)', s).groups()
        # pdb.set_trace()                       
        if t[0] is not '':
            x = int(t[0])
        else:
            x = 1       
        if t[1] is not '':
            y = int(t[1])                                                                        
        else:                                   
            y = 1                               
        return round(x/(x+y), 4)  

但是,我认为这个问题很混乱,而不是 Pythonic 方式。

谢谢。

西多姆

您可以使用Ti(\d*)Cu(\d*)捕获数字并将匹配的对象传递给替换函数;其中数字可以分别作为第一个和第二个捕获组访问:

lst = ["Ti5Cu3", "TiCu2", "Ti2Cu3"]
​
def div_sub(match):
    x, y = match.group(1), match.group(2)
    x = 1 if x == '' else int(x)
    y = 1 if y == '' else int(y)
    return str(x/(x+y))
​
import re
[float(re.sub(r"Ti(\d*)Cu(\d*)", div_sub, s)) for s in lst]
# [0.625, 0.3333333333333333, 0.4]

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用正则表达式(Oracle)从竖线分隔的字符串中获取值

来自分类Dev

使用正则表达式从特殊字符前后的字符串中获取数字

来自分类Dev

使用正则表达式从特殊字符前后的字符串中获取数字

来自分类Dev

使用bash和正则表达式获取字符串中的数字

来自分类Dev

如何使用正则表达式从字符串中获取数字?

来自分类Dev

如何使用正则表达式从字符串中获取数字

来自分类Dev

使用正则表达式从字符串中获取数字对

来自分类Dev

如何使用正则表达式从字符串中获取数字?

来自分类Dev

在VBA中使用正则表达式仅获取字符串中的数字

来自分类Dev

正则表达式:使用JavaScript从字符串中获取数字格式的nnn?

来自分类Dev

Python正则表达式分隔字符串

来自分类Dev

使用正则表达式验证逗号分隔的数字字符串吗?

来自分类Dev

如何使用正则表达式替换oracle中逗号分隔字符串中的单个数字?

来自分类Dev

字符串中的正则表达式数字

来自分类Dev

使用正则表达式在python中获取重复字符串

来自分类Dev

使用正则表达式从字符串中获取子字符串

来自分类Dev

使用正则表达式从输入字符串中获取键值字符串?

来自分类Dev

使用Python正则表达式按换行符或句点分隔字符串

来自分类Dev

使用Python正则表达式按换行符或句点分隔字符串

来自分类Dev

如何在python中使用正则表达式以“,”分隔字符串

来自分类Dev

使用python正则表达式来分隔字符串

来自分类Dev

使用正则表达式匹配分隔列表中的子字符串

来自分类Dev

Python正则表达式获取可选字符串之间的数字

来自分类Dev

JavaScript正则表达式-从字符串中获取第N个数字

来自分类Dev

从没有正则表达式的字符串中获取数字集

来自分类Dev

正则表达式从字符串中获取最后一组数字

来自分类Dev

Java正则表达式从字符串中获取数字

来自分类Dev

通过正则表达式从字符串中获取数字

来自分类Dev

正则表达式在字符串中获取两个数字

Related 相关文章

  1. 1

    使用正则表达式(Oracle)从竖线分隔的字符串中获取值

  2. 2

    使用正则表达式从特殊字符前后的字符串中获取数字

  3. 3

    使用正则表达式从特殊字符前后的字符串中获取数字

  4. 4

    使用bash和正则表达式获取字符串中的数字

  5. 5

    如何使用正则表达式从字符串中获取数字?

  6. 6

    如何使用正则表达式从字符串中获取数字

  7. 7

    使用正则表达式从字符串中获取数字对

  8. 8

    如何使用正则表达式从字符串中获取数字?

  9. 9

    在VBA中使用正则表达式仅获取字符串中的数字

  10. 10

    正则表达式:使用JavaScript从字符串中获取数字格式的nnn?

  11. 11

    Python正则表达式分隔字符串

  12. 12

    使用正则表达式验证逗号分隔的数字字符串吗?

  13. 13

    如何使用正则表达式替换oracle中逗号分隔字符串中的单个数字?

  14. 14

    字符串中的正则表达式数字

  15. 15

    使用正则表达式在python中获取重复字符串

  16. 16

    使用正则表达式从字符串中获取子字符串

  17. 17

    使用正则表达式从输入字符串中获取键值字符串?

  18. 18

    使用Python正则表达式按换行符或句点分隔字符串

  19. 19

    使用Python正则表达式按换行符或句点分隔字符串

  20. 20

    如何在python中使用正则表达式以“,”分隔字符串

  21. 21

    使用python正则表达式来分隔字符串

  22. 22

    使用正则表达式匹配分隔列表中的子字符串

  23. 23

    Python正则表达式获取可选字符串之间的数字

  24. 24

    JavaScript正则表达式-从字符串中获取第N个数字

  25. 25

    从没有正则表达式的字符串中获取数字集

  26. 26

    正则表达式从字符串中获取最后一组数字

  27. 27

    Java正则表达式从字符串中获取数字

  28. 28

    通过正则表达式从字符串中获取数字

  29. 29

    正则表达式在字符串中获取两个数字

热门标签

归档