悠悠楠杉
网站页面
正文:
在实际数据处理中,我们常遇到类似这样的元组列表:
data = [
("Python基础", ("语法", "循环"), "入门教程", "正文内容约800字..."),
("机器学习", ("监督学习", "神经网络"), "进阶指南", "正文内容约1200字..."),
("Web开发", ("Django", "Flask"), "框架对比", "")
]通过列表推导式结合条件判断,可轻松过滤空内容项。例如剔除"正文"为空的元组:
valid_data = [item for item in data if item[3].strip()]
# 输出:[('Python基础', ('语法', '循环'), '入门教程', '正文内容约800字...'),
# ('机器学习', ('监督学习', '神经网络'), '进阶指南', '正文内容约1200字...')]使用解包语法重新排列元素,比如将"描述"移动到第二位:
reordered = [(title, desc, keywords, content) for title, keywords, desc, content in data]
# 输出:[('Python基础', '入门教程', ('语法', '循环'), '正文内容约800字...'), ...]当遇到多层嵌套时(如关键词元组),可通过itertools.chain实现平滑展开:
from itertools import chain
flattened = [
(title, *chain.from_iterable([keywords]), desc, content)
for title, keywords, desc, content in data
]
# 输出:[('Python基础', '语法', '循环', '入门教程', '正文内容约800字...'), ...]关键技巧:
1. 使用strip()方法避免空格干扰
2. 星号表达式*可解包可迭代对象
3. 通过type(item)动态判断嵌套层级
这种处理方式特别适用于从数据库原始数据到前端展示数据的转换流程,既能保持数据完整性,又能满足不同场景的展示需求。对于超长文本(如正文),建议额外添加切片处理:content[:1000] + '...' 确保输出规范。
最终整合代码示例:
processed_data = [
(title, desc, *keywords, content[:1000])
for title, keywords, desc, content in data
if content.strip()
]