Python新手求助:如何将特定多行字符串转为两个有序列表?
把多行键值字符串拆分为键、值两个列表
先看你拿到的原始字符串格式:
raw_str = ''' "key0": "value0", "key1": "value1", "key2": "value2", '''
作为Python新手,可以按以下简单步骤实现需求:
- 第一步:清理字符串,拆分有效行
先去掉字符串首尾的三个单引号,再按换行符拆分每行,过滤掉空行:
# 清理首尾的''',拆分每行 lines = raw_str.strip("'''").split('\n') # 过滤掉空行,只保留有内容的行 valid_lines = [line.strip() for line in lines if line.strip()]
- 第二步:遍历每行,拆分键和值
每行的格式是"key": "value",,我们可以按:(冒号加空格)拆分,再处理掉值末尾的逗号,同时保留键的引号格式:
keys = [] values = [] for line in valid_lines: # 按冒号加空格拆分键和值部分 key_part, value_part = line.split(': ') # 直接保留键的引号格式加入列表 keys.append(key_part) # 处理值部分:去掉末尾的逗号,再还原引号格式 cleaned_value = value_part.rstrip(',').strip('"') values.append(f'"{cleaned_value}"')
- 第三步:验证结果
执行print(keys[0])就会输出"key0",完全符合你的要求。
完整代码整合起来是这样:
raw_str = ''' "key0": "value0", "key1": "value1", "key2": "value2", ''' lines = raw_str.strip("'''").split('\n') valid_lines = [line.strip() for line in lines if line.strip()] keys = [] values = [] for line in valid_lines: key_part, value_part = line.split(': ') keys.append(key_part) cleaned_value = value_part.rstrip(',').strip('"') values.append(f'"{cleaned_value}"') # 验证输出 print(keys[0]) # 输出 "key0" print(values[0]) # 输出 "value0"
如果你不需要值保留引号,把values.append(f'"{cleaned_value}"')改成values.append(cleaned_value)即可。
内容的提问来源于stack exchange,提问作者OnasaFin
相关产品推荐
相关产品推荐

