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

如何并排表示多个字符串数据(列表),并使用Python 3.2或更高版本进行比较?,python,variable-assignment,Python,Variable Assignment,我是Python的初学者 我的任务是编写一个交互式文本库程序,该程序有三个功能: 要求用户输入要使用的数据/文件(.text)的名称 然后要求他们输入命令: 一,sd yyyymmdd yyyymmdd-->命令1 其中sd=当天(其间)所有服务器的互联网负载,但I 有2个文本文件,注意所有值必须作为列返回/打印 二,dl服务器1服务器2-->命令2 其中dd=服务器1和服务器2之间的负载差异 从所选文件中,他们可以使用以下命令查看平均服务器负载: iii.年度YYYY--->命令3 显示从第一

我是Python的初学者

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

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

    然后要求他们输入命令:

    一,<代码>sd yyyymmdd yyyymmdd-->命令1

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

    二,<代码>dl服务器1服务器2-->命令2

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

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

    iii.
    年度YYYY--->命令3

    显示从第一年(YYYY)到最后一年(YYYY)的一般负荷/平均负荷。

  • 当用户输入=(q)时,程序退出,否则将打印(错误/未知)


  • 问题#1

    我应该使用
    s.spilt()

    问题#2:


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

    您试图构建的部分是命令解析器

    如果您的命令语言非常简单,那么可以使用
    split
    。只有在以下情况下,这才有效:

    • 命令行总是恰好是一行
    • 命令和参数被任何空格分割(特定的空格并不重要)
    • 在任何命令名或参数中都不可能有空格(甚至不带引号或转义)
    如果所有这些都是真的,那么您的解析器就非常简单:

    cmd, *args = line.strip().split()
    
    如果输入是
    'sd yyyyymmdd yyyymmdd\n'
    ,那么您将得到
    cmd='sd'
    args=['yyyyyymmdd','yyyyymmdd']
    ,这(我认为)是您想要的。然后,如果您有一个dict映射命令名到处理这些命令的函数,您可以执行以下操作:

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

    如果您需要一些更复杂的东西,例如,在参数中包含引号或转义空格的方法,类似于
    bash
    cmd.exe
    shell的方式,那么您可能可以使用
    csv
    模块(或者
    shlex
    模块)

    如果您需要更复杂的东西,您需要构建自己的解析器,使用类似于
    pyparsing
    的东西


    您可能还希望了解如何使用该模块,而不是围绕
    input
    编写自己的循环,在地图中查找
    cmd
    字符串等。请参见文档页面底部的示例。PyPI上还有许多功能更强大的选项供您搜索。

    如果您意识到您的问题难以理解,请不要添加解释如何阅读的注释,只需编辑该问题,这样就可以在第一时间阅读。对于糟糕的文字,我深表歉意。我不知道如何编辑stackoverflow中的文字,因为每当你按“回车”键时,它都会输入一条“评论”。道歉既没有必要,也没有帮助。再次编辑问题。我希望这对现在有所帮助。(请注意,不同服务器的数据都是以.text文件的形式提供给我的,我不知道在编写之前是否应该导入它们)我仍然没有真正理解它。
    i.
    是命令的一部分吗?还是使用
    -->命令1
    ?也许给我们看一个真实用户输入的假文本?谢谢你的指导,但是,如果我不想使用全局变量,我该怎么办???@WhomICan:你的意思是你不想让命令映射成为全局变量?然后将整个命令处理器包装在一个类中,并使命令映射成为一个实例变量。即使您不想使用
    cmd
    模块,也应该看看它是如何实现的。以及一些第三方替代方案。还可以看看一些RPC服务处理器,比如说bjsonrpc
    ,它们具有类似的设计,即使它们的内部结构非常不同。@WhomICan值得注意的是,仅仅在Python源文件的顶部粘贴一个文本并没有那么糟糕(可能一点也不糟糕?)正如一些黑客所做的那样,在C语言中使用全局变量更符合“全局变量不好”的口号。@BlacklightShining:很好的解释。当然,在Python中,在顶层定义的每个函数和类都是一个全局变量(因为,与C及其亲属不同,它们是第一类对象,以与任何其他值相同的方式存储在变量中)…