首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python版本3.9不支持match语句

Python版本3.9不支持match语句
EN

Stack Overflow用户
提问于 2022-11-11 09:14:46
回答 3查看 117关注 0票数 -4

我在一台新计算机上安装了Python,不幸的是,我从一段时间以来一直使用的代码中得到了一条错误消息。这是关于“匹配”声明的。以下是代码:

代码语言:javascript
复制
import os

def save(df, filepath):
    dir, filename = os.path.split(filepath)
    os.makedirs(dir, exist_ok=True)
    _, ext = os.path.splitext(filename)
    match ext:
        case ".pkl":
            df.to_pickle(filepath)
        case ".csv":
            df.to_csv(filepath)
        case _:
            raise NotImplementedError(f"Saving as {ext}-files not implemented.")

现在我的问题是,如何解决“PythonVersion3.9不支持match语句”的问题?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2022-11-11 09:24:26

或者只有ifelif

代码语言:javascript
复制
import os

def save(df, filepath):
    dir, filename = os.path.split(filepath)
    os.makedirs(dir, exist_ok=True)
    _, ext = os.path.splitext(filename)
    if ext == ".pkl":
        df.to_pickle(filepath)
    elif ext == ".csv":
        df.to_csv(filepath)
    else:
        raise NotImplementedError(f"Saving as {ext}-files not implemented.")
票数 1
EN

Stack Overflow用户

发布于 2022-11-11 09:16:58

Match语句是Python3.10的一个特性。如果升级到3.10或3.11,你会做得最好。

https://monovm.com/blog/how-to-update-python-version/

票数 1
EN

Stack Overflow用户

发布于 2022-11-11 09:19:49

简单的答案是:升级到Python 3.10。

如果无法升级,则可以使用Python字典作为替代:

代码语言:javascript
复制
MATCH = {
    '.pkl': df.to_pickle
    '.csv': df.to_csv
}

_, ext = os.path.splitext(filename)

try:
    MATCH[ext](filepath)
except KeyError:
    raise NotImplementedError(f"Saving as {ext}-files not implemented.")
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74400296

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档