我是Python新手。我目前正在开发一个应用程序,它根据用户输入从Data表中获取数据。到目前为止,我似乎无法在任何地方找到正确的命令集。有人有任何提示吗?
在更多技术术语中,这个想法是这样的 - 用户输入数据,用户提交,查询,获取和检索,打印结果......任何想法?
答案 0 :(得分:0)
如果您使用的是XLSX文件,则此处发布的答案(openpyxl find cell or row by value)可以根据单元格中的特定值查找行。
如果是CSV文件,如果有一列唯一键,您可能需要阅读它并创建一个字典,否则每次输入搜索词时都会遍历每一行。
答案 1 :(得分:0)
以下是一个可以给你一些想法的解决方案。 注意我仅使用StringIO作为示例,这样我就不必使用文件,因此该示例可以直接使用。您可以修改代码以从Excel文件,Pandas DataFrame,数据库或任何其他类型的存储中读取。那是你的选择。
import csv
import StringIO
data = """date,obs1,obs2
2017-01-01,23.2,30.2
2017-02-01,14.9,13.3
"""
buffer = StringIO.StringIO()
buffer.write(data)
buffer.seek(0)
def select_action():
menu = """Would you like to: (select a number)
1) See all data?
2) See data for a specific date?
3) Exit
-->"""
action = raw_input(menu)
while action.strip() not in ['1', '2', '3']:
print "ERROR: Invalid action"
action = raw_input(menu)
def do_action(action):
if action == '1':
reader = csv.reader(buffer)
for line in reader:
print "\t".join(field for field in line)
elif action == '2':
reader = csv.DictReader(buffer)
date = raw_input("Select date: ").strip()
for line in reader:
if date == line['date']:
output = ''
for k, v in line.items():
output += ("%s: %s " % (k, v))
print output
# You could write a case for action 3, but it isn't necessary
# the way I've written the code.
print "Goodbye"
def run():
action = select_action()
do_action(action)