regex - 如何从字符串中提取键和值
问题描述
我想从字符串中提取一些键及其值。看来程序需要使用正则表达式,但我不太了解
看来程序需要使用正则表达式,但我不太了解
字符串是这样的
adprod_type^B6^Apr_flag^B0^Asource^B^Asource_id^B^Aadprod_params^Bheight^D^Chtml^D<style>img{width:100% !important; height:100% !important}</style>\\n<script>gAdController.passback();</script>^Cwidth^D^Aadprodset_id^B9123^Aadserve^B
预期是这样的
adprod_type:'6',pr_flag:'0',source:'',source_id:'',adprod_params:{height:'',html:'<style>img{width:100% !important; height:100% !important}</style>\\n<script>gAdController.passback();</script>',width:''},adprodset_id:'9123',adserve:''
我试过这个:
file_obj = open("/Users/icko/Documents/000/a.txt")
all_lines = file_obj.readlines()
for line in all_lines:
a = line.split('^A')
for i in a:
b = i.split('^B')
key = b[0]
val = b[1]
data[key] = val
if data['adprod_type'] == '6':
print('key=' + key)
print('value=' + val)
file_obj.close()
谢谢
解决方案
我试过这个:
if __name__ == '__main__':
file_obj = open("/Users/icko/Documents/000/a.txt")
all_lines = file_obj.readlines()
for line in all_lines:
data = {}
a = line.split('')
for i in a:
b = i.split('')
key = b[0]
val = b[1]
data[key] = val
if data['adprod_type'] == '6':
metadata = {}
metadata1 = {}
metadata2 = {}
metadata3 = {}
subdata = data['adprod_params']
c = subdata.split('')
data1 = c[0].split('')
data2 = c[1].split('')
data3 = c[2].split('')
key1 = data1[0]
key2 = data2[0]
key3 = data3[0]
val1 = data1[1]
val2 = data2[1]
val3 = data3[1]
metadata1[key1] = val1
metadata2[key2] = val2
metadata3[key3] = val3
metadata = dict(metadata1, **metadata2, **metadata3)
print(metadata)
成功!
推荐阅读
- javascript - 如何在单击时为单个幻灯片打开弹出窗口,而不是同时打开所有幻灯片?
- java - 如何在 Activity 和 View 类之间传输数据?
- python - Pyspark - Groupby 并收集多列列表并创建多列
- webpack - 可视化 speed-measure-webpack.json 文件有什么方法吗?
- javascript - 检查对象数组是否具有相同的键和总和值
- python - 计算字符串列表中的子字符串
- javascript - 使用 await 等待另一个 observable 完成
- laravel - laravel 自定义验证问题它无法正常工作,给出了一些错误,一些没有给出
- python - 调用迭代器时如何删除输出“无”?
- c - 无法将 C 中的 Linux TCP 套接字程序移植到 Windows