python - python参数验证-pyspark数据框过滤字符串
问题描述
我需要将 where 子句字符串直接传递给输入数据框以过滤输入记录。具有列名和要过滤的值的 filter_string 将采用以下格式:
Ex 1: "(col('clm1') == '201')"
Ex 2: "(col('clm1') == '101') & (col('dim2') == '201')"
Scenario: If filter_string = "(col('clm1') == '201')" # In the correct format
df_output = df_input.filter(eval(filter_str)
现在,如果不是上述格式,我想编写 python 语法来引发过滤器字符串的异常。我怎样才能做到这一点?
解决方案
我正在尝试理解您所写的内容,但遇到了麻烦。一般来说,你不应该把“文本”和“代码”混在一起。它使试图阅读您作品的人感到困惑。“Scenario:”和“Ex 1:”这两个词不是代码,不应出现在您的代码块中。
听起来您想根据匹配的字符串引发异常。以下是如何做到这一点:
filter_string = "(col('clm1') == '201')" # Could be something else too.
check_string = "(col('clm1') == '201')"
if not other_string == check_string:
raise TypeError(f"The string you provided, {filter_string}, is not valid.")
df_output = df_input.filter(eval(filter_string))
推荐阅读
- object-detection - 建议如何使用 Yolov4 训练预训练模型?
- java - AndroidViewModel 没有零参数构造函数。如何解决这个问题?
- git - 版本控制并与 pdf 合并;不断更新的注释
- macos - 更新到 macOS Big Sur 后 XAMPP 不起作用
- python - 在 Tkinter 中更新或“刷新”帧
- html - 如何在 CSS 中为具有透明度的背景图像添加色调
- laravel - 如何使用 livewire 重置文件输入
- php - “foreach”循环中的不稳定值
- .net - 我的第二个应用程序池不起作用,('提供者:SQL 网络接口,错误:50 - 发生本地数据库运行时错误..)
- android - 如何在主屏幕上实现双击?(不在应用程序屏幕中)