如何使用Python3.2或更高版本并排表示多个字符串数据(列表)并进行比较?

2024-06-01 08:27:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我是Python的初学者。你知道吗

我的任务是编写一个交互式文本库程序,该程序有三个功能:

  1. 要求用户输入要使用的数据/文件(.text)的名称

    然后让他们输入命令:

    sd yyyymmdd yyyymmdd --> command 1

    其中sd=当天(中间)所有服务器的互联网负载,但我 有2个文本文件,注意所有值必须作为列返回/打印

    二。dl server1 server 2 --> command 2

    其中dd=服务器1和服务器2之间的负载差异

  2. 从选定的文件中,他们可以使用以下命令查看平均服务器负载:

    yearly YYYY yyyy ---> command 3

    显示从第一年(YYYY)到第二年(YYYY)的总负荷/平均负荷。

  3. 当用户输入=(q)时,程序退出,否则将打印(坏/未知)。


问题1:

我应该使用s.spilt(),元组还是什么?它应该是什么样子的?你知道吗

问题2:

使用bool函数(True、False)可以吗?你知道吗


Tags: 文件数据text用户命令程序功能服务器
1条回答
网友
1楼 · 发布于 2024-06-01 08:27:24

您试图构建的部分是一个命令解析器。你知道吗

如果您的命令语言非常简单,那么可以使用split。只有当且仅当:

  • 命令行总是恰好是一行。你知道吗
  • 命令和参数被任何空格分割(特定的空格不重要)。你知道吗
  • 在任何命令名或参数中都不可能有空格(甚至不带引号或转义)。你知道吗

如果所有这些都是真的,那么您的解析器非常简单:

cmd, *args = line.strip().split()

如果输入是'sd yyyymmdd yyyymmdd\n',那么最终得到的是cmd = 'sd'args = ['yyyymmdd', 'yyyymmdd'],我想这就是你想要的。然后,如果您有一个dict将命令名映射到处理这些命令的函数,您可以执行以下操作:

handlers[cmd](*args)

在本例中,如果您的handlers{'sd': handle_sd, 'q': handle_quit},那么这将调用handle_sd('yyyymmdd', 'yyyymmdd'),这也是您想要的。(当然,在现实生活中,您需要一些错误处理,以防用户键入dict中没有的命令名,或者给出错误的参数数,但这只是一个简单的示例。)

如果您需要一些更复杂的东西,例如,在参数中包含带引号或转义的空格的方法,类似于您的bashcmd.exeshell所做的,那么您可能可以避开csv模块(或者shlex模块)。你知道吗

如果需要更复杂的东西,则需要使用pyparsing之类的方法构建自己的解析器。你知道吗

您可能还想看看如何使用^{}模块,而不是围绕input编写自己的循环,在映射中查找cmd字符串等。请参阅docs页底部的示例。在PyPI上还有许多更强大的替代品,您可以搜索。你知道吗

相关问题 更多 >