Excel Regex,还是导出到Python? ; Python中的“Vlookup”?

时间:2010-05-05 01:28:05

标签: excel excel-vba python regex vba

我们有一个Excel文件,其中包含一个包含人员记录的工作表。

1。电话号码卫生

其中一个字段是电话号码字段,其中包含格式为例如:

的电话号码
+XX(Y)ZZZZ-ZZZZ

(其中X,Y和Z是整数)。

还有一些记录的数字较少,例如:

+XX(Y)ZZZ-ZZZZ

其他人真的搞砸了格式:

+XX(Y)ZZZZ-ZZZZ / ZZZZ

或:

ZZZZZZZZ

我们需要将这些全部清理成以下格式:

0YZZZZZZZZ (or OYZZZZZZ with those with less digits).

2。填写主管详情

每个人还有一个主管,作为数字ID给出。我们需要进行查找以获取该主管的名称和电子邮件地址,并将其添加到该行。

此查找将首先在同一工作表上(即搜索本身),然后它可以回退到另一个包含更多人的工作簿。

3。方法

对于第一个问题,我正在考虑以某种方式在Excel / VBA中使用正则表达式来进行解析。我的Excel-fu不是最好的,但我想我可以学习......哈哈。这个上有什么特别的要点吗?

但是,我最好将XLS导出为CSV(例如使用xlrd),然后使用Python来修复电话号码?

对于第二种方法,我考虑只在Excel中使用vlookup,提取数据,并以某种方式,让它落空,首先是搜索自身,然后是外部工作簿,然后只是输入错误文本。不知道如何做最后一部分。

但是,如果我碰巧选择导出到CSV并在Python中执行此操作,那么执行vlookup的有效方法是什么? (我应该转换为dict,还是只是迭代?还是有更好的,或者更惯用的方式?)

干杯, 维克多

2 个答案:

答案 0 :(得分:2)

一般情况下,避免使用Excel公式;使用xlrd提取所需的数据,然后忘记它来自Excel并使用Python操作数据。例如。解决xlrd / vlookup问题:最好的方法是从包含键和值的2列的相关部分创建字典ONCE。

使用xlrd导出到CSV然后将其读回是浪费时间并丢失有价值的信息(例如Excel单元格中实际的数据类型)。如果您的数据在数据库中,您会将其导出为CSV并将其读回吗??

答案 1 :(得分:0)

如果你去VBA路线,可能需要看看Tushar Mehta's documentation。如果你去Python路线,你可以尝试解析为CSV,或者只是操作内存中的东西并通过XLWT写入(这将是我的首选技术)。您也可以考虑直接使用COM调用修改Excel数据,基于类似this的内容。最后,如果您承诺在Excel之外执行此操作,您可以查看Jython和Apache POI。不是最轻量级的解决方案,但POI是我所知道的功能最齐全的库,不依赖于在Windows上运行。

正如其他人在评论中所观察到的那样,很难具备如此广泛的问题。希望这里的东西可以让你开始...