我目前正在尝试编写一个小的 Python 脚本,它解析 SVN .diff 文件并将结果写入 .csv,它可以在 Microsoft 中轻松打开Excel 或类似程序。但是,我停留在解析部分,更准确地说是行排序。我要解析的文件如下所示。
- <name key="first.key">Old string 1</name>
- <name key="second.key">Old string 2</name>
+ <name key="first.key">New string 1</name>
+ <name key="second.key">New string 2</name>
+ <name key="third.key">Another new string</name>
...
为了轻松解析文件并将彼此相邻的键写入表中,我需要按键对对它进行排序,因此它看起来像下面这样。这样,我就可以轻松地浏览文件。
- <name key="first.key">Old string 1</name>
+ <name key="first.key">New string 1</name>
- <name key="second.key">Old string 2</name>
+ <name key="second.key">New string 2</name>
+ <name key="third.key">Another new string</name>
...
是否有内置的方法来进行这种排序或简单的替代方法?
请您参考如下方法:
是的,有!您可以将 sorted(或 sort)函数与您自己的排序函数结合使用:
import re
pattern = re.compile(r'\<name key="(.*)">(.*)<\/name>')
def sorter(pair):
return pattern.match(pair).groups()
print(sorted(list_of_lines, key=sorter))
