要分析的包

pybundestag的Python项目详细描述


德国联邦议院

自德国联邦议院19届全体会议以来,所有协议都作为高度结构化的xml文件发布。虽然所有以前的协议都可以作为XML文件使用,但它们的结构非常少,几乎相当于非结构化的TXT文件。

此外,联邦议院还以高度结构化的XML文件发布所有现任和前任议员的信息,包括个人信息、简短简历和特定时期的信息。

此python cli工具旨在将所有mdb上的协议和文件转换为单个csv或json文件。这样,数据科学家可以使用输出进行进一步处理。

安装

您可以通过PIP安装Pybundestag。

pip install pybundestag

安装完成后,您可以选择将pybundestag用作cli工具,或将其解析器输入到您的一个脚本中。

用法

您可以在pybundestag中使用一致的语法来转换协议和mdb xml文件。cli模式下的一般语法如下:

pybundestag entity input output

实体可以是"protocol"或"mdb",具体取决于手头的任务。如果要分析协议,请选择"协议"。如果要转换mdb xml文件,请使用"mdb"。input'应该是协议或mdb xml文件的路径,output是输出的所需路径。解析bundestag协议时,还可以指定一个文件夹,pybundestag将解析该文件夹中的所有xml文件。"protocol"和"mdb"都支持几个可选参数。

protcols的解析

确保下载所有要转换为XML文件的协议。请记住,您只能转换那些在19届议会期间或之后创建的文件。如果要同时转换多个协议,请将它们放在一个文件夹中。 下载完要转换的所有XML文件后,打开操作系统的命令行工具,转到PyBundestag所在的位置。

您可以使用上面讨论过的cli界面。但是,您也可以使用以下可选参数:

  • -M[--meta]:如果有,联邦议院将在每一次演讲(日期、地点、全体会议和全体会议)中添加meta信息。
  • -s[--separator]:CSV文件的自定义分隔符(默认为",")。确保在分隔符周围加上引号。

假设您希望在/home/maxmustermann/rede.xml中转换单个文件,并且希望在/home/maxmustermann/output.csv下将其转换为CSV文件,而不使用元数据并使用默认分隔符。你可以这样使用联邦议院:

pybundestag protocol /home/MaxMustermann/rede.xml /home/MaxMustermann/output.csv

脚本完成后,您将收到一条消息,表明您的输出已写入所需路径。

如果我们假设/home/maxmustermann/reden/下有多个xml文件,并且您希望将这些文件转换为一个包含元数据和分号作为分隔符的csv文件,那么您可以这样调用pybundestag:

pybundestag protocol /home/MaxMustermann/reden/ /home/MaxMustermann/output.csv -m -s ";"

您将看到打印到屏幕上的程序的当前进度,并将收到一条消息,表明您的输出已写入所需路径。生成的csv文件将包含演讲的唯一id、日期、演讲人的派系、位置、会议期间、演讲人的角色、会议、演讲人的姓名、演讲人的id和原始文本(去掉注释)。

当然,如果希望写入json文件,可以将输出文件的名称从output.csv更改为output.json。注意,您选择的分隔符将被忽略。

分析MDB XML

如果要转换包含所有mdb信息的xml文件,可以使用"mdb"作为pybundestag的第一个positional参数。输入必须是德国联邦议院提供的XML文件。正如转换协议时所做的那样,将输出指定为csv或json fiL.

您还可以使用一些可选参数:

  • -P[--period]:您可以指定某个议会时期。Pybundestag只会转换和输出该议会时期的成员,并添加该时期的具体信息(例如,任务类型和选区)。这应该是一个整数。
  • -i[--institutions]:在这里您可以插入多个机构名称(例如委员会或派系)。联邦议院将检查MDB是否也是该机构的成员。如果要检查多个机构,则必须使用";"分隔它们。注意,如果使用此选项,还必须指定句点。在您的最终结果中,您将为您输入的每个机构获得一个布尔变量。"真"将意味着MDB在指定期间是该机构的一部分。错误则意味着另一种情况。没有健全的检查,请确保拼写正确。

如果您只想将/home/maxmustermann/mdbs.xml中的所有mdb转换为/home/maxmustermann/mdbs.csv,那么您可以这样使用pybundestag:

pybundestag mdb /home/MaxMustermann/mdbs.xml /home/MaxMustermann/mdbs.csv

这将生成一个csv文件,其中包含个人信息(如姓名、出生日期、性别等),以及一份简短的简历和一个唯一的id。

一个更复杂的例子是,如果要将19个议会时期的所有mdb提取到json文件中,同时还要检查给定的mdb是否是"verteidigungsausschuss"和/或"ausschuss für arbeit und soziales"的成员:

pybundestag mdb /home/MaxMustermann/mdbs.xml /home/MaxMustermann/mdbs.json -p 19 -i "Verteidigungsausschuss;Ausschuss für Arbeit und Soziales"

此文件不仅包含个人信息、唯一ID和简短的简历,还包含特定时期的信息和两个虚拟变量"Member懔verteidigungsausschuss"和"Member懔ausschuss für arbeit und soziales"。

链接

您可以在官方网站上找到德国联邦议院的所有协议和所有MDB(以前和现在)上的XML文件。 有一个以德国联邦议院为中心的Github组织,名为"联邦议院"。在那里,您可以找到更多的python和其他语言的存储库。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Samsung远程测试实验室(RTL):如何将设备绑定到Eclipse/debugger   java XSSFCellStyle在LibreOffice Calc Ubuntu中不起作用   java junit测试错误ClassCastException   java Libgdx:如何删除表中的边框   java如何在处理中创建多色光栅化图片   java可以在JSF 2.0中级联ajax呈现的内容吗?   java Exit menuitem在内部框架中不工作   java向JPanel添加未知数量的JComponents   mongodb Mongo group by query转换为java   java没有GestureDetector的实现可以在安卓应用程序上运行   java Spring mvc,hibernate LazyInitializationException将实体转换为dto时出现异常   java中棘手的方法重载   java如何在SpringMVC中验证数字字段中的非数字输入?   Java ElasticSearch高级客户端的使用问题:SortedNumericIndexFieldData无法转换为类IndexGeoPointFieldData