You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Python 3.10中如何在match-case结构中获取包含空格的终端命令参数

解决带空格的命令参数匹配问题

你遇到的问题根源在于user.split()默认会把所有空白字符都作为分隔符,把输入拆分成多个元素。当你的参数包含空格时,split()得到的列表长度就会超过2,自然匹配不上case ["cesar", mot]这个分支。

这里有两种简单的解决方案,都能完美解决你的问题:

方案一:使用split(maxsplit=1)限制分割次数

通过给split()传入maxsplit=1参数,我们只对输入做一次分割——把第一个空格前的内容作为命令,剩下的所有内容(包括后续的空格)作为完整参数。修改后的代码如下:

user_input = input("->")
parts = user_input.split(maxsplit=1)
match parts:
    case ["cesar", mot]:
        cesar(mot)  # 这里mot会包含"cesar"之后的所有文本,包括空格
    case ["cesar"]:
        print("请输入要加密/解密的文本哦!")  # 处理只输入"cesar"的情况
    case _:
        print("你的输入不正确")

方案二:使用partition()拆分命令和参数

str.partition()方法会把字符串按指定分隔符拆成三个部分:分隔符前的内容、分隔符本身、分隔符后的内容。我们可以利用它直接提取命令和完整参数:

user_input = input("->")
command, _, mot = user_input.partition(" ")
match command:
    case "cesar":
        if mot:
            cesar(mot)
        else:
            print("缺少要处理的文本,请补充输入!")
    case _:
        print("你的输入不正确")

两种方案都能确保mot变量拿到"cesar"之后的所有内容,不管里面有多少空格。你可以根据自己的习惯选择其中一种~

内容的提问来源于stack exchange,提问作者BerretMan

火山引擎 最新活动