鱼C论坛

 找回密码
 立即注册
查看: 2397|回复: 8

[已解决]字符串转换

[复制链接]
发表于 2023-7-7 18:44:05 | 显示全部楼层 |阅读模式
10鱼币

【求助帖】请及时确认最佳答案,下次提问时可以得到更多关注,问题可以更快解决
str1 = "data[7].sub_order_list[0].process_list[0].material_list[2].material_code"
str2 = "["data"][7]["sub_order_list"][0]["process_list"][0]["material_list"][2]["material_code"]"

str1字符串  怎么通过代码变成str2,str1可能还会变长  求大佬解答!!
最佳答案
2023-7-7 18:44:06
  1. import re

  2. def convert_str(str1):
  3.     str2 = re.sub(r'(\w+)(?!\])', '["\g<1>"]', str1)
  4.     return str2

  5. str1 = "data[7].sub_order_list[0].process_list[0].material_list[2].material_code"
  6. print(convert_str(str1))
复制代码

最佳答案

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-7-7 18:44:06 | 显示全部楼层    本楼为最佳答案   
  1. import re

  2. def convert_str(str1):
  3.     str2 = re.sub(r'(\w+)(?!\])', '["\g<1>"]', str1)
  4.     return str2

  5. str1 = "data[7].sub_order_list[0].process_list[0].material_list[2].material_code"
  6. print(convert_str(str1))
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-7-7 18:45:52 | 显示全部楼层
[b]要将str1转换为str2,可以按照以下步骤进行操作:

1. 通过使用字符串切片,将`data[7].sub_order_list[0].process_list[0].material_list[2].material_code`中的每个部分提取出来。
2. 使用提取的各个部分构建一个新的字符串,即str2。

下面是一个示例代码,用于实现上述步骤:

  1. str1 = "data[7].sub_order_list[0].process_list[0].material_list[2].material_code"

  2. # 切分str1
  3. parts = str1.split('.')

  4. # 构建str2
  5. str2 = '["{}"]'.format('"]["'.join(parts))

  6. print(str2)
复制代码

输出:

  1. ["data"][7]["sub_order_list"][0]["process_list"][0]["material_list"][2]["material_code"]
复制代码


这样就成功地将str1转换为str2了。无论str1的长度如何变化,该代码都能正常工作。

求最佳答案
[/b]
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-7-7 18:48:36 | 显示全部楼层
本帖最后由 学爬虫的先生 于 2023-7-7 18:51 编辑

str1 = "data[7].sub_order_list[0].process_list[0].material_list[2].material_code"

split_list = str1.split('.')
str2 = ''

for item in split_list:
    if '[' in item:
        index = item.index('[')
        key = item[:index]
        index = item[index:]
        str2 += '[\"{}\"]{}'.format(key, index)
    else:
        str2 += '\"{}\"'.format(item)

print(str2)
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-7-7 18:50:55 | 显示全部楼层
学爬虫的先生 发表于 2023-7-7 18:48
str1 = "data[7].sub_order_list[0].process_list[0].material_list[2].material_code"

split_list = st ...

["data"][7]["sub_order_list"][0]["process_list"][0]["material_list"][2]\"material_code\"   大佬你这个差一点 目前最好的回复 感谢您
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-7-7 18:52:01 | 显示全部楼层
sfqxx 发表于 2023-7-7 18:45
要将str1转换为str2,可以按照以下步骤进行操作:

1. 通过使用字符串切片,将`data[7].sub_order_list[0 ...

["data[7]"]["sub_order_list[0]"]["process_list[0]"]["material_list[2]"]["material_code"]
大佬不是这样的
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-7-7 18:59:53 | 显示全部楼层
本帖最后由 学爬虫的先生 于 2023-7-7 19:01 编辑

str1 = "data[7].sub_order_list[0].process_list[0].material_list[2].material_code"

split_list = str1.split('.')
str2 = ''

for item in split_list:
    if '[' in item:
        index = item.index('[')
        key = item[:index]
        index = item[index:]
        str2 += '[\"{}\"]{}'.format(key, index)
    else:
        str2 += '[\"{}\"]'.format(item)

print(f"\"{str2}\"")


vscode输出结果:
"["data"][7]["sub_order_list"][0]["process_list"][0]["material_list"][2]["material_code"]"
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-7-7 19:02:02 | 显示全部楼层
本帖最后由 isdkz 于 2023-7-7 19:04 编辑
  1. import re

  2. def convert_str(str1):
  3.     str1 = str1.replace('.', '')
  4.     str2 = re.sub(r'(\w+)(?!\])', '["\g<1>"]', str1)
  5.     return str2

  6. str1 = "data[7].sub_order_list[0].process_list[0].material_list[2].material_code"
  7. print(f'"{convert_str(str1)}"')
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-7-10 08:45:19 | 显示全部楼层
新手鱼友前来学习
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-9 21:04

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表