You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中如何将指定格式字符串转为含列表值的目标dict()?

嘿,这个问题我之前也踩过坑!直接用split(": ")确实会把内容拆得乱七八糟,因为后面的Time和Subject text前面的空格+冒号才是真正的键值分隔符,而不是所有的: 。给你几个实用的解决方案:

方法1:正则表达式匹配(最精准,适合固定键场景)

因为你的键是明确的三个:Date、Time、Subject text,可以用正则精准捕获每个键对应的值,避免误拆分:

import re

text = "Date: 07/14/1995 Time: 11:31:50 Subject text: Something-cool"
# 正则匹配:捕获键,然后匹配值直到下一个键开头或字符串结尾
pattern = r'(Date|Time|Subject text): ([^:]+?(?= (Date|Time|Subject text):|$))'
matches = re.findall(pattern, text)

# 整理成目标字典格式
result = {key: [value.strip()] for key, value, _ in matches}
print(result)

输出结果就是你想要的:

{"Date":["07/14/1995"], "Time": ["11:31:50"], "Subject text":["Something-cool"]}

方法2:手动分割(简单直接,适合键顺序固定的场景)

如果键的顺序永远是Date → Time → Subject text,可以直接按特定的分隔符分步拆分,不用正则也能搞定:

text = "Date: 07/14/1995 Time: 11:31:50 Subject text: Something-cool"

# 第一步:拆分Date部分和剩余内容
date_section, rest = text.split(" Time: ", 1)
# 第二步:拆分Time部分和Subject text部分
time_section, subject_section = rest.split(" Subject text: ", 1)

# 组装字典
result = {
    "Date": [date_section.split(": ")[1]],
    "Time": [time_section],
    "Subject text": [subject_section]
}
print(result)

方法3:通用正则方案(适合键可能扩展的场景)

如果以后可能增加类似格式的键(比如Location: New York),可以用更通用的正则匹配任意带空格的键名:

import re

text = "Date: 07/14/1995 Time: 11:31:50 Subject text: Something-cool"
# 匹配由空格分隔的单词组成的键,然后捕获对应的值
pattern = r'(\b\w+(?: \w+)*): ([^:]+?(?= \b\w+(?: \w+)*:|$))'
matches = re.findall(pattern, text)

result = {key: [value.strip()] for key, value in matches}
print(result)

内容的提问来源于stack exchange,提问作者Anthony

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:06:24