如何将复杂的Excel表格数据转换为构造数据?

我遇到了一个如下的问题,希望有些机构可以提供一些build议。
我需要把许多不同形状的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 | |-------|-------------------| 

我目前的解决scheme是为每个types的Excel表定义一个函数。 但是会有数千个不同的excel文件,所以我不得不重复编写类似的代码。 所以我的问题是它是否有共同的解决scheme。

我发现了一个类似的问题 ,但没有更多的信息。我认为机器学习可能有助于解决这个问题,但我对此一无所知。 有没有人可以分享一些想法? 非常感谢!

看看你在问题中提供的模式,我们看到数据有时在一个单独的单元格中,其他时间在文本中用':'分隔符编码。 我把它弄平了,parsing了一个线性模式的组合文本。

我build议你用xlrd这样的东西读取excel文件。 然后通过单元格拉出文本,parsing出你感兴趣的领域。

 <cell>'user'<cell|':'>user_name<cell>'mail'<cell|':'>email_address<cell> 

其中<cell>是一个或多个单元格边界,可能分布在行上。

一旦你有用户的电子邮件对,你可以用xlwt写出来。

你有4种types的文件。

如果这是你可以用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文件,并以这种方式循环。