gpt4 book ai didi

python - 根据用户输入的匹配项对 csv 文件的值求和

转载 作者:行者123 更新时间:2023-11-28 18:17:18 24 4
gpt4 key购买 nike

问题描述

我有一个 csv 文件,其中包含 3 位信息,如下所示,用逗号分隔。我的代码目前返回第二个和第三个值,如果我输入的第一个值与写的完全一样。

例如,如果输入为 25.803.1.1,我的用户输入确实告诉我 name = BALLOON 并且连接数等于 357。我想完成这项工作,其中用户输入 25.803.1.1 它将建议连接数等于 357,但是如果用户输入 25.803。它会给出所有匹配 25.803 的连接总和。如果用户输入 25.,它将给出以 25 开头的所有内容的连接总和。

所以我假设我需要一个 if 语句来查看是否有 1 位小数或 2 位小数或 3 位小数,然后打印出结果。我不确定是否最好进行某种分组、过滤或匹配,或者我是否需要创建一个新列表,将日期的第一位按小数分割成一个看起来像 [[25] 的列表, [803]、[1]、[1]] 为例,然后尝试根据用户以某种方式输入的内容对其进行索引。非常感谢任何帮助。

输入 25.803.1.1 时有效的当前代码

with open("D:/Python/Data/rttData.csv") as csvfile:
readCSV = csv.reader(csvfile, delimiter=',')

enbIDs = []
enbNames = []
enbRRCs = []

for row in readCSV:
enbID = row[0]
enbName = row[1]
enbRRC = row[2]

enbNames.append(enbName)
enbIDs.append(enbID)
enbRRCs.append(enbRRC)

siteSelection = input('Enter the eNB number below to search for [ex: 25.803.1.1]')
enbIndex = enbIDs.index(siteSelection)
theName = enbNames[enbIndex]
theRRC = enbRRCs[enbIndex]
print('The name of site', siteSelection, 'is:', theName,'and the RRC Connections are:',theRRC)

CSV 文件

25.803.1.1,BALLOON,357
25.803.2.1,BALLOON,1941
25.803.3.1,BALLOON,3802
25.803.12.2,BALLOON,18783
25.803.22.2,BALLOON,20136
25.803.32.2,BALLOON,17560
25.803.14.4,BALLOON,2661
25.803.24.4,BALLOON,3472
25.803.34.4,BALLOON,4379
25.804.1.1,BANK,8410
25.804.2.1,BANK,7656
25.804.3.1,BANK,9822
25.804.12.2,BANK,9418
25.804.22.2,BANK,20522
25.804.32.2,BANK,14694
25.804.14.4,BANK,17569
25.804.24.4,BANK,16137
25.804.34.4,BANK,13835

最佳答案

您需要检查每条记录的 ID 以查看是否与您的查询部分匹配。以下解决方案通过使用 startswith 字符串方法来实现。可以实现更智能的部分匹配,但这应该能让您走上正轨。

#! /usr/bin/env python3
import collections
import csv
import itertools

Record = collections.namedtuple('Record', 'id, name, rrc')


def main():
with open('rttData.csv', newline='') as file:
records = tuple(itertools.starmap(Record, csv.reader(file)))
query = input('Enter the ID to search for: ')
for record in filter(lambda item: item.id.startswith(query), records):
print(f'ID: {record.id}\nName: {record.name}\nRRC: {record.rrc}\n')


if __name__ == '__main__':
main()

关于python - 根据用户输入的匹配项对 csv 文件的值求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47560883/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com