我必须创建一个查找文件ID列的函数(因为它可以在标题中的任何地方被索引),一旦找到它,ID列将检查给定ID是否等于列中的任何ID。如果是,它返回与给定ID相关联的数据行。**不能使用任何类型的导入。**I'我的第一部分是正确的,但是最后一个测试用例让我很困惑,因为列不一样,所以我没有按照正确的顺序得到答案。
(我以前写过打开和读取文件等的函数)这是我现在的代码:
def ecu_data(arbitration_id, data):
""" Returns a list of the timestamp and data of an arbitration_ID. """
rows = []
arb_index = data[0].index("Arbitration_ID")
for row in data[0:]:
if row[arb_index] == arbitration_id:
rows.append(row)
return rows
这三个测试用例是:
x一个一个一个一个x一个一个二个一个x一个一个三个一个
前两种情况期望并接收输出:['1597759710.1258929', '153', '8', '20 A1 10 FF 00 FF 50 1F', 'Normal', 'Normal']
和['1597759710.345933', '153', '8', '20 A1 10 FF 00 FF C0 8F', 'Normal', 'Normal']
,而第三种情况期望输出:['1597759356.234800', '8', '368', '00 00 00 00 00 FA 0A 40', 'Normal', 'Normal']
并接收:['1597759356.234800', '368', '8', '00 00 00 00 00 FA 0A 40', 'Normal', 'Normal']
如何修改代码,使行在文件中的打印方式与它们在文件中的打印方式完全一致?
2条答案
按热度按时间lstz6jyr1#
下面的函数需要一个csv文件名和一个ID来搜索。它将打开文件,然后使用
DictReader
将每一行的标题行读取到字典中。然后它将返回任何Arbitration_ID
匹配search_id
的行的values()
(或者您也可以通过删除.values()
来返回dict)lc8prwob2#
下面是一个代码片段,它有一个函数,可能会帮助你解决你的问题。
说明:
1.此函数使用“with”语句读取指定的文件。
1.现在我们将读取第一行,并使用','(逗号)分隔符将其拆分,因为我们有一个CSV文件。strip() 函数用于删除 split(',') 函数生成的元素中存在的任何空字符或空格。
1.如前所述,ID列可以在标题中的任何位置进行索引,我们将其索引值存储在变量 id_index 中,并将其用于引用。
1.如果没有找到ID列,我们将返回None作为输出。
1.现在我们将循环遍历文件,并使用类似的函数 .strip() 和 .split(',') 来存储每次迭代中特定行的示例。
1.现在是最后一部分;我们将使用条件语句并检查满足ID的行的示例,最后返回整行。
代码: