Skip to main content
 首页 » 编程设计

python之使用 Python 将字符串中的字符转换为多个字符

2025年05月04日24kerrycode

我有一个字符串列表,前缀字符表示数字的乘数。所以如果我有这样的数据:

data = ['101n', '100m', '100.100f'] 

我想用字典

prefix_dict = {'y': 'e-24', 'z': 'e-21', 'a': 'e-18', 'f': 'e-15', 'p': 'e-12', 
               'n': 'e-9', 'u': 'e-6', 'm': 'e-3', 'c': 'e-2', 'd': 'e-1', 
               'da': 'e1', 'h': 'e2', 'k': 'e3', 'M': 'e6', 'G': 'e9', 
               'T': 'e12', 'P': 'e15', 'E': 'e18', 'Z': 'e21', 'Y': 'e24'} 

插入它们对应的字符串。当我查看与我的类似的其他问题时,有一个字符被翻译成另一个字符。有没有一种方法可以使用翻译功能将一个字符翻译成多个字符,或者我应该采用不同的方法吗?

请您参考如下方法:

您可以为此使用正则表达式,这也适用于 'da':

>>> data = ['101n', '100m', '100.100f', '1d', '1da'] 
>>> import re 
>>> r = re.compile(r'([a-zA-Z]+)$') 
>>> for d in data: 
    print r.sub(lambda m: prefix_dict.get(m.group(1), m.group(1)), d) 
...      
101e-9 
100e-3 
100.100e-15 
1e-1 
1e1 

还有一个使用 itertools.takewhile 的非正则表达式版本:

>>> from itertools import takewhile 
>>> def find_suffix(s): 
    return ''.join(takewhile(str.isalpha, s[::-1]))[::-1] 
...  
>>> for d in data: 
    sfx = find_suffix(d) 
    print (d.replace(sfx, prefix_dict.get(sfx, sfx))) 
...      
101e-9 
100e-3 
100.100e-15 
1e-1 
1e1