首页 > 其他分享 >如何快速从文本中找到需要的信息,字典和正则灵活运用

如何快速从文本中找到需要的信息,字典和正则灵活运用

时间:2024-08-10 10:54:10浏览次数:19  
标签:cmd list print 正则 灵活运用 line stock data 字典

import re
#打开文本文件
f = open("stock_data.txt",encoding="utf-8")
#单独读取第一行数据处理进行分割,末尾换行符去掉
headers = f.readline().strip().split(',')
print(headers)
#定义一个字典,以股标代码做为KEY,每个行做为值
stock_list = {}
for line in f:
    line = line.strip().split(',')
    print(line)
    stock_list[line[0]]=line
    print(type(stock_list),stock_list)
f.close()

#允许用户通过模糊查询股票名, # 比如输入“哈工”, 就把所有名称当中包含啤酒的股票都打印出来。

while True:
    cmd = input("请你输入你的查询指令:")
    for  s_id,s_data in stock_list.items():
        if cmd in s_data[1]:
            print(s_data)
# 允许按 当前价、涨跌幅、换手率 这几列来筛选信息,
# 比如输入“当前价>50”则把价格大于50的股票都打印,

这重点说明一下,输入的条件要验证合法性,列名是否在上边的三列,数值是不是合法。

continue 是继续执行,

cmd_list = re.split("[><]",cmd)
if len(cmd_list)!=2:
    print("你输入的筛选条件不合法,请重新输入!")
    continue
cmd_name, cmd_value = cmd_list
if cmd_name not in ["当前价","涨跌幅","换手率"]:
    print("你输入的筛选列名不合法,请重新输入!")
    continue
try:
    cmd_value = float(cmd_value)
except:
    print("你输入的筛选数值不合法,请重新输入!")
    continue

更新内容

#单独处理第一行,通过内容找到索引
headers = f.readline().strip().split(',')
header_index = headers.index(cmd_name)
print(header_index)
print(cmd_name, cmd_value)
for s_id, s_data in stock_list.items():
    if ">" in cmd:
        if float(s_data[header_index].strip("%")) > cmd_value:
            print(s_data)
    if "<" in cmd:
        if float(s_data[header_index].strip("%")) < cmd_value:
            print(s_data)

标签:cmd,list,print,正则,灵活运用,line,stock,data,字典
From: https://blog.csdn.net/lfsysc/article/details/141070836

相关文章

  • Linux Shell编程--正则表达式、grep、sed、awk
    前言:本博客仅作记录学习使用,部分图片出自网络,如有侵犯您的权益,请联系删除!一、正则表达式1、正则表达式定义1.1、简介正则表达式是一种强大的文本模式匹配工具,用于搜索、替换或分割字符串。在Shell脚本中,正则表达式通常与grep、sed和awk等工具一起使用。1.2、层次分类基......
  • 【Regex】正则表达式详解:从基础到高级应用(保姆篇)
    文章目录正则表达式详解:从基础到高级应用一、正则表达式基础1.什么是正则表达式?2.基本组成部分二、正则表达式的常用模式1.字符匹配2.量词3.位置符号4.分组和捕获三、正则表达式的高级应用1.断言(Assertions)2.贪婪与非贪婪匹配四、正则表达式在不同编程语言中......
  • 尝试将多个列表添加到嵌套字典中,但它跳过第一个列表
    defgetEntries():#Loopvariables,etcloopNum=1setupString=''entryData=[]#Loopwillgothroughallourentryboxesinourgrid#Foreachrow,wewillgetthedataandbuildourstringandthenappenditto......
  • 如何使用字典更改张量中的值?
    当我有如下的张量和字典时,如何将字典映射到张量?例如,Dict={1:'A',2:'B',3:'C'}ex=torch.tensor([[1,2,3],[3,2,1]])#Expectedresult#tensor([[A,B,C],#[C,B,A]])我尝试了这个代码和torch.where,但它不起作用出色地。......
  • sed 命令与正则表达式
    sed是非交互式的编辑器。它不会修改文件,除非使用shell重定向来保存结果。默认情况下,所有的输出行都会被打印到屏幕上。sed编辑器逐行处理文件(或输入),并将结果打印到屏幕上。具体过程如下:首先sed把当前正在处理的行保存在一个临时缓存区中(也称为模式空间),然后处理临时缓......
  • 在一串字符串中Java使用正则匹配电话号码的方法
    1.使用正则表达式来匹配电话号码在Java中,使用正则表达式匹配电话号码是一个常见的需求。电话号码的格式可能因国家/地区而异,但一个典型的格式可能是这样的:(123)456-7890。在这个例子中,我将提供一个Java程序,该程序使用正则表达式来匹配这种格式的电话号码。首先,我们需要了解电话......
  • Linux shell脚本案例:使用正则表达式匹配目录并定时删除日期早于当前系统日期的所有目
    实现每周三和每周日执行清理/NFS目录的任务,你可以使用shell脚本结合cron定时任务。下面是一个示例脚本,它会删除/NFS目录下所有名称形如XBK_FULL_YYYYMMDDHHMMSS和XBK_INCR_YYYYMMDDHHMMSS的目录,其中日期早于当前系统日期。步骤1:创建Shell脚本创建脚本......
  • 如何迭代并将字典的所有值放入另一个具有不同键的字典列表中
    我正在尝试迭代字典列表并获取2个键的值,并将这些值写入另一个具有另一个键的字典列表。下面是我试图写入的输出列表。post_obj=[{"city":place["place"],"display":place["seq"]}]输入:data=[{'place':'SanJose',......
  • 字典序比较
    字典序比较是一种基于字典中单词排列顺序的比较方式,通常用于字符串之间的比较。在计算机科学中,字典序(也称为词序或字典顺序)比较遵循以下规则:按字符顺序比较:两个字符串从左到右,逐个字符进行比较。ASCII值比较:每个字符按照其ASCII值(或在Unicode中的等价值)进行比较。ASCII值较......
  • 通配符和正则表达式区别
    通配符和正则表达式区别通配符是shell自带的用于匹配文件名的工具,多用在文件名上,比如查找find,ls,cp等等。正则表达式则需要特定命令的支持才可以使用,如:grep、sed和awk(号称Linux三剑客)、vi/vim、perl等,这些都是处理文本的工具。其次,shell对通配符与正则表达式的处理也有不同,“......