我遇到了如下问题,并希望有些机构可以给出一些建议 我需要将许多不同形状的excel表转换为构造数据,excel表如下所示。
|--------------------|----|----|
|user:Sam | | |
|--------------------|----|----|
|mail:sam@example.com| | |
|-------|----------------|-----|
|user |Jack | |
|-------|----------------|-----|
|mail |jack@example.com| |
|-------|----------------|-----|
|-------|-----|---------------|---------|
|user |May | | |
|-------|-----|---------------|---------|
| |mail |may@example.com| |
|-------|-----|---------------|---------|
|user | Alex |mail |alex@example.com|
目标结果将类似于以下格式。
|-------|-------------------|
|user | email |
|-------|-------------------|
|Jack | jack@example.com |
|-------|-------------------|
|Sam | sam@example.com |
|-------|-------------------|
|Alex | alex@example.com |
|-------|-------------------|
|May | may@example.com |
|-------|-------------------|
我目前的解决方案是为每种类型的Excel表定义一个函数。但是会有成千上万个不同的excel文件,所以我不得不重复编写类似的代码。所以我的问题是它是否有共同的解决方案。
我发现了一个similar question,但没有更多的信息。我认为机器学习可能有助于解决问题,但我对此知之甚少。有没有人可以分享一些想法? 非常感谢!
答案 0 :(得分:1)
查看您在问题中提供的模式,我们发现数据有时位于单独的单元格中,有时在文本中使用“:”分隔符进行编码。我把它弄平并解析汇编的文本以获得线性模式。
我建议您使用xlrd之类的内容阅读excel文件。 然后单步执行单元格拉出文本并解析出您感兴趣的字段。
<cell>'user'<cell|':'>user_name<cell>'mail'<cell|':'>email_address<cell>
其中<cell>
是一个或多个单元格边界,可能分布在行上。
拥有用户电子邮件对后,您可以使用xlwt将其写出来。
答案 1 :(得分:-1)
您有4种类型的文件。
如果这就是全部,你可以用4个if语句编写1个函数。
def table_sort(file):
If file == condition:
extract_data_this_way
elif file == other_condition:
extract_data_this_way
elif file == other_condition:
extract_data_this_way
else:
extract_data_this_way
如果您使用pandas执行此操作,则可以更轻松地进行编码。
我有很多文件。您可以传入一个列表并使用for循环进行迭代。或者使用glob来加载目录中的所有excel文件并以这种方式循环。