python - IF 表达式包含意外的数字 - 可以缩短代码
问题描述
想知道这是否可以简化:
sp = subprocess.Popen(['lipc-get-prop', 'com.lab126.wifid', 'cmState'], stdout=subprocess.PIPE)
response, _ = sp.communicate()
if response.find("CONNECTED") > -1:
wifi = 'CONNECTED'
elif response.find("PENDING") > -1:
wifi = 'PENDING'
elif response.find("READY") > -1:
wifi = 'READY'
elif response.find("NA") > -1:
wifi = 'NA'
我更喜欢 wifi = response 之类的东西。打印响应给出了预期的文本,但在 IF 语句中使用它,值是数字,给出了字符串中文本的起始位置。是否有单行版本来为 wifi 分配文本值?谢谢您的帮助!
解决方案
您可以使用正则表达式。
import re
match = re.search(r'CONNECTED|PENDING|READY|NA', response)
if match:
wifi = match.group(0)
这不是单行的,因为您需要检查是否找到了任何单词。如果您知道它将包含其中之一,您可以使用:
wifi = re.search(r'CONNECTED|PENDING|READY|NA', response).group(0)
推荐阅读
- mongodb - 在 initdb 脚本上创建索引
- c# - Lambda 评估意外地重新评估?
- powershell - 需要根据文件名将一系列数字文件移动到文件夹中
- python - 打印额外名称的功能
- serialization - 将 Pandas UDF 与大型广播对象一起使用
- node.js - 如何生成唯一的哈希并将其保存在我的 MongoDB 文档中,而不必通过 req.body 发送?
- regex - 正则表达式过程参数:Oracle
- python - Python 继承。字段变量不存在?
- xml - 尝试使用 Golang encoding/xml 将结构编码为 xml 具有交替重复模式的结构
- regex - 正则表达式匹配 url 路径 - Golang 与 Gorilla Mux