python实现将固定格式的字符串调整为字典的格式,用于爬虫爬取数据时快速添加请求数据

摘要:
#
#!/usr/local/bin/python3.7

"""
@File    :   str_replace.py
@Time    :   2020/06/03
@Author  :   Mozili

"""# 输入多行字符串
data = []
str = input('输入要调整的字符串:
')
data.append(str)
stopword = ''#停止条件

for line in iter(input,stopword):#iter()中第一个参数是可调用的,即可以像函数一样调用他,因此是input,而不是input()
    data.append(line.split())

# print(data)
# 遍历列表
for i in range(len(data)):
    if ':' in data[0]:
        if i==0:
            s0 = data[0].split(':')[0]
            s1 = data[0].split(':')[1].strip(' ')
            # 给字符串加单引号
            s0 = '{}{}{}'.format("'", s0, "'")
            s1 = '{}{}{}'.format("'", s1, "'")
            # 拼接成一个新的字符串
            new_str = 'data = ' + '{' + '
 ' + s0 + ':' + s1 + ','  
        else:
            s0 = data[i][0].split(":")[0]
            s1 = data[i][1]
            s0 = '{}{}{}'.format("'", s0, "'")
            s1 = '{}{}{}'.format("'", s1, "'")
            if i==len(data)-1:
                new_str = ' ' + s0 + ':' + s1 + '
' + '}'
            else:
                new_str = ' ' + s0 + ':' + s1 + ','
    elif '&' in data[0]:
        # 以&分割字符串
        s_list = data[0].split('&')
        # print(s_list)
        for n in range(len(s_list)):
            # 将字符串中的=换成:
            str = s_list[n].replace('=', ':')
            # print(str)
            # 把字符串转为list
            str_list = list(str)
            # print(str_list)
            # 确认:在列表中的索引值
            i = str_list.index(':')
            # print(i)
            # 在:的前面添加'
            str_list.insert(i, "'")
            # 在:的后面添加'
            str_list.insert(i+2, "'")
            # 将list转换为str
            str = ''.join(str_list)
            # 给字符串添加单引号
            str = '{}{}{}'.format("'", str, "'")
            if n==0:
                new_str = 'data = ' + '{' + '
 ' + str + ','
            else:
                if n==len(s_list)-1:
                    new_str = ' ' + str + '}'
                else:
                    new_str = ' ' + str + ','
            print(new_str)

            
    else:
        i=0
        while i < len(data):
            # print(i)
            if i==0:
                s = data[0].split(' ')
                # 获取第一个字符串
                s0 = s[0]
                # 给字符串加单引号
                s0 = '{}{}{}'.format("'", s0, "'")
                # 获取第二个字符串
                s1 = s[1]
                s1 = '{}{}{}'.format("'", s1, "'")
                new_str = 'data = ' + '{' + '
 ' + s0 + ':' + s1 + ',' 
            else:
                # 判断列表的长度,处理没有值的键值对
                if len(data[i])==1:
                    s = data[i][0]
                    s0 = '{}{}{}'.format("'", s, "'")
                    new_str = ' ' + s0 + ':' + "''" + ','
                else:
                    s0 = data[i][0]
                    s1 = data[i][1]
                    # 给字符串添加单引号
                    s0 = '{}{}{}'.format("'", s0, "'")
                    s1 = '{}{}{}'.format("'", s1, "'")
                    # 判断是否是最后一组数据
                    if i == len(data)-1:
                        new_str = ' ' + s0 + ':' + s1 + '}'
                    else:
                        new_str = ' ' + s0 + ':' + s1 + ','
            i+=1
            print(new_str)
        break
           
    print(new_str)
   
    
# 支持替换以下三种格式的字符串
str1 = """
email 18827441xxxx
icode 
origURL http://www.renren.com/home
domain renren.com
key_id 1
captcha_type web_login
password 32904758c29a901f87064f3aa151f9c373112ed66370fe9b28152f0ce63d3796
rkey d6b3acc434f19c92fad1f33176e506f0
f https%3A%2F%2Fbaidu.com%2F
"""
str2 = """
from: en
to: zh-Hans
text: cat
"""
str3 = "ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&tn=baidu&wd=python中正则替换"

免责声明:文章转载自《python实现将固定格式的字符串调整为字典的格式,用于爬虫爬取数据时快速添加请求数据》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇RabbitMQ(3) Spring boot集成RabbitMQ马尔科夫链蒙特卡罗方法(MCMC)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

【Vue后台管理二】vue-admin-template 对接后端API JWT认证

初始化对接端台API 上一篇了完成了项目初始化,但是那个只是把 vue-admin-template 模版简单的初始化了一下,新增了tagsview标签快捷导航栏,其他的没什么变化。 这一篇了就完成了和后端的Jwt token认证,登录,退出,基本的table list接口数据请求。首先看看效果。 其实看起来和第一篇的初始化效果差不多,唯一的区别是,第一篇...

Axios 各种请求方式传递参数格式

为方便起见,为所有支持的请求方法提供了别名 在使用别名方法时, url、method、data 这些属性都不必在配置中指定 axios.request(config) axios.get(url[, config]) axios.delete(url[, config]) axios.head(url[, config]) axios.post(ur...

从 Android 到 AI 之路

       高煥堂  misoo.tw@qq.com  从 Android 到 AI 之路:Java与Python 携手同行           1.以Python撰写 AI模型框架(Framework) 2.准备Java与Python协同开发环境 3.在Android Studio里撰写Python程序  4.一个基本的AI建模议题:分类的标签设定 5...

python反射

isinstance: 判断对象是否是属于这个类(向上判断)type: 返回某对象的数据类型issubclass: 判断某类是否是这个类的子类 1 class Animal: 2 def chi(self): 3 print('吃饭') 4 class Cat(Animal): 5 def he(self):...

Python Linux系统管理之文件与文件路径管理

一、介绍 在 Linux 中,操作系统提供了很多的命令(例如:ls、cd),用于文件和目录管理。在 Python 中,有一个 os 模块,也提供了许多便利的方法来管理文件和目录。 二、os 模块 os:语义为操作系统。所以,os 模块提供的肯定是操作系统相关的功能了(与具体的平台无关)。 如果用 dir() 查看 os,会发现内容相当多。下面,只列出文件和...

MySQL学习笔记:字符串前后补全0

  遇到一个需求:不足6位的需要自动补全6位,使用函数LPAD()和RPAD()补全。   LPAD(str, len, padstr)   用字符串padstr对str进行左边填充补全直至它的长度达到len个字符,返回str。 一、前补0(左补0) SELECT LPAD(id,6,0) AS TIME FROM test;   结果:    二、后补0...