关于#python#的问题:想把两个爬取出来的字符串里面的内容连接起来并转化为字典,但是好像只连接到了标题,里面的内容没连接起来


import requests # 数据请求模块
import re # 正则表达式模
import json # 序列化与反序列化
import pprint # 格式化输出

url  ='https://www.58.com/caiwu/?qq-pf-to=pcqq.c2c'
headers = {
   'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36 Edg/113.0.1774.50'}
response = requests.get(url=url,headers=headers)
#print(response.text)

name_data= re.findall('target="_blank" class="t">(.*?)</a></td>',response.text)
print(name_data)
xinzi_data = re.findall('style="width:100px">(.*?)&nbsp;</td>',response.text)
#print(xinzi_data)

flexiple =[name_data]

f1 = ""

for i in flexiple:
    f1 += str(i)+ " " 

str_name_data = " ".join(name_data)

print(type(str_name_data))

flexiple =[xinzi_data]

f2 = ""

for i in flexiple:
    f2 += str(i)+ " " 

str_xinzi_data = " ".join(xinzi_data)

#print(type(f1))
#print(type(f2))

New = '{"str_name_data" : "str_xinzi_data"}'
print(New)

b = eval(New)
print(b, type(b))
pprint.pprint(b)

这是我的代码,想把两个爬取出来的字符串里面的内容连接起来并转化为字典,但是好像只连接到了标题,里面的内容没连接起来,想请问一下这个问题如何解决

你直接 New = {str_name_data : str_xinzi_data} 不就好了?干嘛加上引号再用eval?

  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/7559139
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:Python爬虫实战(一):腾讯新闻的较真查证平台,抓取疫情谣言数据
  • 除此之外, 这篇博客: Python文件操作&数据格式,简单简洁中的 2、读文件 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 方法描述
    read()从指定文件中读取指定字节的数据
    readline()从指定文件中读取一行数据
    readlines()从指定文件中的数据一次读出,并将每一行视为一个元素,存储到列表中。

    😊 到了写代码环节,兄弟们操练起来。耍 ! 耍 ! 整起 !

    file = open('a.txt','r')
    
    #读文件
    #str_ = file.read(5) # 读取五个字符
    #print(str_)
    
    #readline
    # str2 = file.readline()
    # print(str2) # 第1次读取 读取第一行
    # str3 = file.readline()
    # print(str3) # 第二次读取 读取第二行
    
    #readliness
    str4 = file.readlines()
    print(str4) # 返回的是一个列表
    
    file.close()
    
  • 您还可以看一下 董付国老师的Python可以这样学(第九季 机器学习案例与实战)课程中的 支持向量机手写数字识别与交叉验证、网格搜索小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:

    针对问题,以下是解决方案:

    在Python中将两个字符串连接为字典,可以使用json库将字符串转换为json格式,然后再将json格式转换为字典。需要注意的是,字符串转为json格式时需要符合json格式的要求,即需要使用双引号来表示字符串。以下是具体的代码实现:

    import json if name == 'main': str1 = "{'name': 'Tom', 'age': 18}" # 原始的字符串1 str2 = '{"sex": "male", "address": "Beijing"}' # 原始的字符串2 str1_json = json.loads(str1.replace("'",'"')) # 将字符串1转为json格式 str2_json = json.loads(str2) # 将字符串2转为json格式 result = {str1_json, str2_json} # 将两个字典合并 print(result)

    其中,json.loads()函数用于将json格式的字符串转为Python对象,{x, y}用于将两个字典合并。

    需要注意的是,在将字符串1转换为json格式时,需要将单引号替换为双引号,因为json格式中只有双引号有效。

    另外,在合并字典时,如果两个字典有重复的键值对,后一个字典的值会覆盖前一个字典的值。如果不需要覆盖,可以使用字典的update()方法进行合并。

    对于以上代码,我们还可以进行进一步的优化,将其封装为函数,并添加类型注解和异常处理等,以提高函数的健壮性和可读性。具体代码实现如下:

    import json from typing import Dict

    def connect_strings(str1: str, str2: str) -> Dict: try: str1_json = json.loads(str1.replace("'",'"')) str2_json = json.loads(str2) result = {str1_json, str2_json} return result except (json.JSONDecodeError, TypeError) as e: print("Error:", e) return {}

    其中,使用了类型注解和异常处理,当字符串无法转为json格式时,会捕获异常并返回空字典。在代码实际运行时,可以根据具体情况进行适当的调整。