首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在字典的值中更改字符串中的数字?

如何在字典的值中更改字符串中的数字?
EN

Stack Overflow用户
提问于 2022-06-28 17:01:24
回答 6查看 93关注 0票数 2

我有下面的字典和钥匙列表。我想要做的是,如果这些键在字典中,并且它们的值中有任何数字(它们是字符串)。我想把这些数字转换成'#'字符。

迪特:

代码语言:javascript
复制
{"name":"Jone","age":"40 years","phone":"88777444"}

钥匙:

代码语言:javascript
复制
["age","phone"]

产出:

代码语言:javascript
复制
{"name":"Jone","age":"## years","phone":"########"}

到目前为止,我已经掌握了这些数字,但不知道如何在字典中修改它们:

我的进步:

代码语言:javascript
复制
def convert(input, keys):
    for k in range(len(keys)):
        if keys[k] in input:
            for el in input[keys[k]]:
                if el.isdigit():
                    print(el)

如您所见,我正在使用python。如果你使用不同的语言,一个正确的方向的提示将是很好的。

EN

回答 6

Stack Overflow用户

发布于 2022-06-28 17:13:34

这与已经给出的答案本质上是一样的,但采用了一种更容易适应的方法,例如,拥有一个字典列表:

代码语言:javascript
复制
import re

d = {"name":"Jone","age":"40 years","phone":"88777444"}
keys = ["age","phone"]

for k, v in d.items():
    if k in keys:
        d[k] = re.sub('\d', '#', v)
print(d)

输出:

代码语言:javascript
复制
{'name': 'Jone', 'age': '## years', 'phone': '########'}
票数 3
EN

Stack Overflow用户

发布于 2022-06-28 17:07:52

我推荐一个正则表达式。

代码语言:javascript
复制
import re

data = {"name":"Jone","age":"40 years","phone":"88777444"}
keys = ["age","phone"]

for key in keys:
    if key in data:
        # replace every key with a new string where every number 
        # ('[0-9]') is substituted by a '#'
        data[key] = re.sub('[0-9]', '#', data[key])

# {'name': 'Jone', 'age': '## years', 'phone': '########'}
print(data)
票数 2
EN

Stack Overflow用户

发布于 2022-06-28 17:21:34

下面是使用字典理解的一行解决方案。

代码语言:javascript
复制
d = {k: re.sub("\d", "#", d[k]) if k in keys else v for k, v in d.items()}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72790540

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档