我有100个csv文件,每个文件都包含不同机构的发布数据,我想对所有这些文件执行相同的操作:
1.从单元格B1获取机构名称。这总是在'at'或'at the'之后。例如“东北大学的出版物” 2.从另一个名为“Codes”的csv文件中查找匹配的InstitutionCode。 例如'1286'。 (对于东北大学)。 3.删除第1-14行(包括单元格B1中的证书名称) 4.将两个额外的列(A列和B列)插入到文件中,并带有以下标题:'Institution'和'InstitutionCode',并将其填入我有数据的所有行的相关信息。 (在上面的例子东北大学和1286年)。
我是Python的新手,发现很难从我找到的资源中整理这个脚本。 有人可以帮帮我吗?
以下是原始格式的数据图像
以下是所需结果的图像
答案 0 :(得分:4)
我可以给你代码,但我会告诉你如何自己编写代码。
阅读代码文件并将机构和代码存储在字典中。 您可以在此处阅读有关阅读csv文件的更多信息:https://pymotw.com/2/csv/或此处:https://pymotw.com/3/csv/。 每行将表示为字符串列表,因此您可以按索引访问单元格元素。使机构名称为键,代码为值。
在for循环中逐个读取csv文件。我将这些称为输入文件。打开一个新文件,以便为您阅读的每个输入文件进行写入。我将这些称为输出文件。
循环csv文件中的行。您可以使用枚举来跟踪行号。您可以在此处找到相关信息,例如:http://book.pythontips.com/en/latest/enumerate.html。
通过从第0行获取元素1来获取单元格B1的内容。
使用正则表达式查找机构名称。这里有更多信息,例如:http://dev.tutorialspoint.com/python/python_reg_expressions.htm 并从您在步骤1中创建的字典中获取机构代码。
继续在行上循环,直到第一个元素等于'标题'。此行包含标题。写"机构"和" InstitutionCode"到输出文件,然后是刚刚找到的标题。为此,将您的行(字符串列表)转换为元组(http://www.tutorialspoint.com/python/python_tuples.htm)并将其作为参数提供给csv编写器对象的writerow方法(参见步骤1中的链接)。
然后对于标题行之后的每一行,创建一个Institution名称和代码的元组,然后是刚刚读取的输入文件中的行的信息,并将其作为writerow方法的参数。 csv writer对象。
关闭输出文件。
要考虑的一件事是您是否需要输出文件中单元格内容的引号。您可以在步骤1中的链接中阅读相关内容。字段分隔符也是如此。如果您没有指定任何内容,则假定它们是逗号,但您可以更改此内容。
我希望这有帮助!