如何在Databricks PySpark中解析指定格式的连接字符串?
解析键值对格式连接字符串的简便方法
待解析的连接字符串:
HOST=HostName;Port=1234;ServiceName=Database;USer ID=User1;Password=Password123;
通用实现思路
这类以;分隔键值对、以=分隔键和值的字符串,核心处理逻辑是分层拆分:
- 去除字符串末尾冗余的分号
- 按
;分割为单个键值对项 - 对每个项按**第一个
=**拆分(避免值中包含=的情况),提取键和值 - 将键值对存入映射结构(比如字典),再从中取值赋值给独立变量
Python 示例代码
conn_str = "HOST=HostName;Port=1234;ServiceName=Database;USer ID=User1;Password=Password123;" # 构建键值对字典 conn_dict = {} for item in conn_str.rstrip(';').split(';'): # 按第一个等号拆分,兼容键含空格的情况 key, value = item.split('=', 1) conn_dict[key.strip()] = value.strip() # 赋值给独立变量 host = conn_dict['HOST'] port = conn_dict['Port'] database = conn_dict['ServiceName'] user = conn_dict['USer ID'] password = conn_dict['Password'] # 验证结果 print(f"主机:{host}") print(f"端口:{port}") print(f"数据库:{database}") print(f"用户:{user}") print(f"密码:{password}")
Shell 脚本示例代码
conn_str="HOST=HostName;Port=1234;ServiceName=Database;USer ID=User1;Password=Password123;" # 拆分并赋值变量 while IFS='=' read -r key value; do case "$key" in HOST) host="$value" ;; Port) port="$value" ;; ServiceName) database="$value" ;; "USer ID") user="$value" ;; Password) password="$value" ;; esac done <<< "$(echo "$conn_str" | tr ';' '\n' | sed '/^$/d')" # 输出结果 echo "主机:$host" echo "端口:$port" echo "数据库:$database" echo "用户:$user" echo "密码:$password"
内容的提问来源于stack exchange,提问作者AMN
相关产品推荐
相关产品推荐

