【问题标题】:Python String Modification on Dictionaries字典上的 Python 字符串修改
【发布时间】:2021-06-28 18:49:18
【问题描述】:

我是 Python 初学者,希望您能帮助解决这个问题。

我有一本看起来像这样 samptest 的字典:

{a: ['PERSON B',
  'PERSON X  Y',
  'PERSON A.B']
 b: ['ANIMAL X',
     'ANIMAL CD.G']
 c: ['CAR A.B.C']
}

我想对存储在字典中不同列表中的项目进行字符串修改,用空格替换特殊字符并删除任何重复的空格。

预期结果samptest:

{a: ['PERSON B',
  'PERSON X Y',
  'PERSON A B']
 b: ['ANIMAL X',
     'ANIMAL CD G']
 c: ['CAR A B C']
}

我尝试循环遍历字典,但无法获得正确的结果。

(附注:我可以通过使用 .replace() 为数据框实现此目的 像这样str.strip().str.upper().str.replace(',', ' ').str.replace('(', ' ').str.replace(')', ' ').str.replace('/',' ').str.replace('.',' ').replace('\s+', ' ', regex=True))

但我无法为存储在字典中的项目复制此内容。任何有关此事的帮助将不胜感激。谢谢

【问题讨论】:

  • 您是否遇到问题 1) 替换字符或 2) 循环遍历值或 3) 替换字典中的字符串?

标签: python string loops dictionary


【解决方案1】:

这应该可以满足您的要求。您可能需要稍微调整正则表达式,但它应该可以帮助您开始

import re

items = {
    'a': ['PERSON B', 'PERSON X  Y', 'PERSON A.B'],
    'b': ['ANIMAL X', 'ANIMAL CD.G'],
    'c': ['CAR A.B.C'],
}


for item in items:
    items[item] = [re.sub('[\s+|.,\()]', ' ', s) for s in items[item]]

print(items)

【讨论】:

    【解决方案2】:

    请试试这个

    for x in mydictionary:
        Str_list= mydictionary [x] 
        mydictionary [x] = [ y.replace(',',' ').replace('.',' ') for y in Str_list]
    # you can add all the replacement one by one 
    

    抱歉,我正在使用移动设备提供此答案

    【讨论】:

      【解决方案3】:

      你可以使用正则表达式来解决这个问题:

      for key in dictionary:
          dictionary[key] = [re.sub(r'[^A-Za-z0-9 ]+| {2,}',' ', x) for x in dictionary[key]]
      

      【讨论】:

        【解决方案4】:

        您可以使用字符类列出所有要删除的字符,而不是使用所有单独的调用来替换。

        重复字符类 1 次以上,例如用一个空格替换此字符串 . ,

        [\s.,()/]+
        

        查看regex demoPython demo

        例如

        import re
        
        dict = {
            'a': ['PERSON B', 'PERSON X  Y', 'PERSON A.B'],
            'b': ['ANIMAL X', 'ANIMAL CD.G'],
            'c': ['CAR A.B.C'],
            'd': ['CAR A. , B.C'],
        }
        
        
        for k in dict:
            dict[k] = [re.sub(r'[\s.,()/]+', ' ', s) for s in dict[k]]
        
        for k in dict:
            print(dict[k])
        

        输出

        ['PERSON B', 'PERSON X Y', 'PERSON A B']
        ['ANIMAL X', 'ANIMAL CD G']
        ['CAR A B C']
        ['CAR A B C']
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2022-01-14
          • 1970-01-01
          • 2012-03-11
          • 2017-04-06
          • 2018-04-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多