搜索和替换字典中的通配符

0 投票
1 回答
1117 浏览
提问于 2025-04-17 01:48

我对Python还比较陌生,如果我用词不当请见谅。我现在用的是Python 2.6.5,不太确定要不要升级到3.0,因为Python是和我的空间分析软件一起下载的。
我正在写一个程序,用来在多个用逗号分隔的文本文件中搜索和替换列标题。因为有一百多个标题,而且在所有文件中都是一样的,所以我决定创建一个字典,并用'pickle'来保存所有的替换内容(这个想法是从其他帖子里看到的)。
我的问题是,我发现文本文件的列标题中有制表符和空格,比如:

    ..."Prev Roll #: ","Prev Prime/Sub","Frontage : ","Depth            : ","Area             : ","Unit of Measure  : ",...

所以我想,为什么不在我的关键字后面加一个通配符,这样搜索的时候不管名字和冒号之间有多少空格都能匹配到呢。我试着用*这个通配符,但它不管用,运行的时候没有匹配或替换成功。我是不是用错了通配符?我想做的事情真的可行吗?还是说我应该放弃这个字典的pickle?
下面是我想做的一个示例:

import cPickle as pickle

general_D = { ....
             "Prev Prime/Sub" : "PrvPrimeSub",
             "Frontage*" : "Frontage",
             "Depth*" : "Depth",
             "Area*" : "Area",
             "Unit of Measure*" : "UnitMeasure", 

谢谢你的建议!

1 个回答

1
  1. 使用 csv 模块来解析和写入你的以逗号分隔的数据。
  2. 使用字符串的 strip() 方法来去掉多余的空格和制表符。
  3. 在你的字典键名中不要包含 *。它们不会像你想的那样起作用,只是表示字面上的 *
  4. 使用 json 可能更好,而不是 pickle。JSON 是人类可读的,且与编程语言无关。而 pickle 在不同版本的 Python 之间可能会出现问题。

撰写回答