回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我必须按4列升序排序xls文件内容</p>
<p>我将xls文件内容转换为列表列表。以下是输入</p>
<p><strong>输入</strong>:</p>
<pre><code>data = """ABC, Do not Consider1, 101, Title and Subtitle, Do not Consider2, 30/12/2015
ABC, Do not Consider1, 100, Title and Subtitle, Do not Consider2, 31/12/2015
ABC, Do not Consider1, 99, BIC Codes, Do not Consider2, 31/12/2015
ABC, Do not Consider1, 98, Title and Subtitle, Do not Consider2, 25/12/2015
ABC, Do not Consider1, 100, ATitle and Subtitle, Do not Consider2, 30/12/2015
XYZ, Do not Consider1, 100, ATitle and Subtitle, Do not Consider2, 30/12/2015
XYZ, Do not Consider1, 100, ATitle and Subtitle, Do not Consider2, 30/12/2015
ABC, Do not Consider1, 100, Title and Subtitle, Do not Consider2, 30/12/2015"""
</code></pre>
<p><strong>字符串格式的相应输出</strong>:</p>
<pre><code> data = """ABC, Do not Consider1, 98, Title and Subtitle, Do not Consider2, 25/12/2015
ABC, Do not Consider1, 99, BIC Codes, Do not Consider2, 31/12/2015
ABC, Do not Consider1, 100, ATitle and Subtitle, Do not Consider2, 30/12/2015
ABC, Do not Consider1, 100, Title and Subtitle, Do not Consider2, 30/12/2015
ABC, Do not Consider1, 100, Title and Subtitle, Do not Consider2, 31/12/2015
ABC, Do not Consider1, 101, Title and Subtitle, Do not Consider2, 30/12/2015
XYZ, Do not Consider1, 100, ATitle and Subtitle, Do not Consider2, 30/12/2015
XYZ, Do not Consider1, 100, ATitle and Subtitle, Do not Consider2, 30/12/2015
"""
</code></pre>
<p>首先,我将数据拆分为列表格式:</strong></p>
<pre><code> # Split data to list.
>>> data_list = [i.split(", ") for i in data.split("\n")]
>>> print "\n".join([", ".join(i) for i in data_list])
ABC, Do not Consider1, 101, Title and Subtitle, Do not Consider2, 30/12/2015
ABC, Do not Consider1, 100, Title and Subtitle, Do not Consider2, 31/12/2015
ABC, Do not Consider1, 99, BIC Codes, Do not Consider2, 31/12/2015
ABC, Do not Consider1, 98, Title and Subtitle, Do not Consider2, 25/12/2015
ABC, Do not Consider1, 100, ATitle and Subtitle, Do not Consider2, 30/12/2015
XYZ, Do not Consider1, 100, ATitle and Subtitle, Do not Consider2, 30/12/2015
XYZ, Do not Consider1, 100, ATitle and Subtitle, Do not Consider2, 30/12/2015
ABC, Do not Consider1, 100, Title and Subtitle, Do not Consider2, 30/12/2015
</code></pre>
<p>以下是排序要求:</p>
<pre><code>- We have to sort by index0 ,
if index0 have same values for multiple items then sort by Index2
if index0 and index2 are same for multiple items then sort by Index3
if index0, index2 and index3 are same for multiple items then sort by Index5
</code></pre>
<p>我的逻辑是</p>
<ol>
<li>创建index0、index2、index5和index5的字符串</li>
<li>使用步骤1中的键创建字典</li>
<li>使用排序函数对键列表进行排序</li>
<li>再次创建xls文件</李>
</ol>
<p>代码:</p>
<pre><code>>>> from collections import defaultdict
>>> data_dict = defaultdict(list)
>>> for i in data_list:
... key = "%s%s%s%s"%(i[0].strip(), i[2].strip(), i[3].strip(), i[5].strip())
... data_dict[key].append(i)
...
>>> sorted_keys = sorted(data_dict.keys())
>>>
>>> for i in sorted_keys:
... for j in data_dict[i]:
... print j
...
...
['ABC', 'Do not Consider1', '100', 'ATitle and Subtitle', 'Do not Consider2', '30/12/2015']
['ABC', 'Do not Consider1', '100', 'Title and Subtitle', 'Do not Consider2', '30/12/2015']
['ABC', 'Do not Consider1', '100', 'Title and Subtitle', 'Do not Consider2', '31/12/2015']
['ABC', 'Do not Consider1', '101', 'Title and Subtitle', 'Do not Consider2', '30/12/2015']
['ABC', 'Do not Consider1', '98', 'Title and Subtitle', 'Do not Consider2', '25/12/2015 ']
['ABC', 'Do not Consider1', '99', 'BIC Codes', 'Do not Consider2', '31/12/2015']
['XYZ', 'Do not Consider1', '100', 'ATitle and Subtitle', 'Do not Consider2', '30/12/2015']
['XYZ', 'Do not Consider1', '100', 'ATitle and Subtitle', 'Do not Consider2', '30/12/2015']
</code></pre>
<p>但是Index2中有数字,即第二列,Index5中有日期,即第5列,所以不能得到排序的数据</p>
<p>你能帮我修一下吗</p>