文本文档怎么变成JSON:从文本结构化到JSON格式的完整指南
在日常数据处理中,我们经常需要将文本文档(如.txt、.csv、日志文件等)转换为JSON格式,JSON(JavaScript Object Notation)因其轻量级、易读、易解析的特性,成为前后端数据交换的主流格式,文本文档究竟如何变成JSON?本文将结合不同场景,从“理解文本结构”到“选择转换方法”,再到“实践操作”,为你提供完整指南。
第一步:理解文本文档的结构——JSON是“结构化”的产物
JSON的本质是“键值对”的嵌套结构,要求数据具有明确的层级和关联性,将文本文档转为JSON的前提是:文本中需要包含可结构化的信息,常见的文本结构分为三类,对应不同的转换思路:
规则化结构文本:每行/每段固定字段
这类文本的每行或每段都包含明确的字段,比如日志文件、CSV格式(逗号/制表符分隔)、数据库导出文本等。
示例(.txt格式的用户日志):
name:张三,age:25,city:北京
name:李四,age:30,city:上海
name:王五,age:28,city:广州
特点:每行记录包含相同字段(name/age/city),字段间用分隔符(逗号、冒号等)隔开。
半结构化文本:含标题和层级内容
这类文本有明确的标题或层级,但字段不固定,比如Markdown文档、配置文件、报告文本等。
示例(.txt格式的产品信息):
产品A
价格:99元
库存:100件
描述:热门款,适合日常使用
产品B
价格:199元
库存:50件
描述:高端款,功能齐全
特点:以“产品”为分组,每组下有“价格/库存/描述”等字段,字段顺序可能不一致。
非结构化文本:纯文本或自由格式
这类文本没有固定结构,比如小说、评论、邮件内容等,若需转为JSON,通常需要提取关键信息(如情感、实体),或整体作为单一字段存储。
示例(.txt格式的用户评论):
这款手机真的不错,屏幕清晰,电池续航也强,就是价格有点贵。
特点:无固定字段,需通过自然语言处理(NLP)提取“观点”“关键词”等结构化信息。
核心转换方法:从文本到JSON的3种路径
根据文本结构不同,转换方法分为三类:规则化解析(适合规则文本)、编程处理(适合半结构化/非结构化文本)、工具转换(适合快速处理)。
方法1:规则化解析——用分隔符和模式匹配提取字段(适合规则文本)
如果文本是规则化结构(如CSV、日志),可通过“分隔符拆分+字段映射”直接生成JSON,核心工具:编程语言(Python/JavaScript)的字符串处理函数。
【Python示例】处理逗号分隔的日志文件
假设users.txt内容如上文“规则化结构文本”示例,目标转为JSON数组:
[
{"name": "张三", "age": 25, "city": "北京"},
{"name": "李四", "age": 30, "city": "上海"},
{"name": "王五", "age": 28, "city": "广州"}
]
操作步骤:
- 读取文本文件,按行分割;
- 对每行用逗号分割字段,再按冒号拆分键值对;
- 将键值对存入字典,追加到列表;
- 将列表转为JSON字符串并保存。
代码实现:
import json
# 1. 读取文本文件
with open('users.txt', 'r', encoding='utf-8') as f:
lines = f.readlines()
# 2. 初始化JSON列表
json_list = []
# 3. 处理每一行
for line in lines:
line = line.strip() # 去除首尾换行符
if not line: # 跳过空行
continue
# 按逗号分割字段,再按冒号拆分键值对
fields = line.split(',')
user_dict = {}
for field in fields:
key, value = field.split(':')
user_dict[key.strip()] = value.strip() # 去除空格
json_list.append(user_dict)
# 4. 写入JSON文件
with open('users.json', 'w', encoding='utf-8') as f:
json.dump(json_list, f, ensure_ascii=False, indent=2) # ensure_ascii=False支持中文,indent=2格式化
print("转换完成!")
【JavaScript示例】处理制表符分隔的CSV文件
若文本是制表符分隔(TSV),思路类似,只需将split(',')改为split('\t'):
const fs = require('fs');
// 1. 读取文本文件
const text = fs.readFileSync('data.tsv', 'utf-8');
const lines = text.split('\n');
// 2. 解析每行
const jsonArray = [];
const headers = lines[0].split('\t'); // 假设第一行是表头
for (let i = 1; i < lines.length; i++) {
if (!lines[i].trim()) continue;
const values = lines[i].split('\t');
const obj = {};
headers.forEach((header, index) => {
obj[header.trim()] = values[index]?.trim();
});
jsonArray.push(obj);
}
// 3. 写入JSON文件
fs.writeFileSync('data.json', JSON.stringify(jsonArray, null, 2), 'utf-8');
console.log('转换完成!');
方法2:编程处理——用正则/模板匹配提取半结构化文本(适合半结构化文本)
半结构化文本(如Markdown、配置文件)需通过“模式匹配+逻辑判断”提取字段,核心工具:正则表达式(Regex)、字符串模板。
【Python示例】处理产品信息文本
假设products.txt内容如上文“半结构化文本”示例,目标转为:
[
{
"product": "产品A",
"price": "99元",
"stock": "100件",
"description": "热门款,适合日常使用"
},
{
"product": "产品B",
"price": "199元",
"stock": "50件",
"description": "高端款,功能齐全"
}
]
操作步骤:
- 按空行分割文本,得到每个产品的独立块;
- 对每个产品块,用正则匹配“字段:值”;
- 将匹配结果存入字典,转为JSON。
代码实现:
import re
import json
# 1. 读取文本文件
with open('products.txt', 'r', encoding='utf-8') as f:
text = f.read()
# 2. 按空行分割产品块
product_blocks = text.strip().split('\n\n')
json_list = []
# 3. 定义正则模式(匹配“字段:值”)
pattern = re.compile(r'(.+?):(.+?)') # 中文冒号,非贪婪匹配
for block in product_blocks:
if not block.strip():
continue
# 提取产品名(第一行)
product_name = block.split('\n')[0].strip()
# 匹配其他字段
fields = dict(pattern.findall(block))
fields['product'] = product_name # 添加产品名字段
json_list.append(fields)
# 4. 写入JSON文件
with open('products.json', 'w', encoding='utf-8') as f:
json.dump(json_list, f, ensure_ascii=False, indent=2)
print("转换完成!")
方法3:工具转换——用现成工具快速处理(适合非技术人员)
若不想编程,可通过在线工具、文本编辑器插件或命令行工具快速转换。
① 在线转换工具(适合小文件)
推荐工具:
- CSV to JSON Online(https://www.convertcsv.com/csv-to-json.htm):支持CSV转JSON,可自定义表头和分隔符;
- Text to JSON(https://jsonformatter.org/text-to-json):支持手动映射文本字段到JSON键;
- Code Beautify(https://codebeautify.org/text-to-json-converter):支持复杂文本模式匹配。
操作步骤(以CSV to JSON为例):
- 打开网页,上传文本文件(或粘贴文本内容);
- 选择分隔符(逗号/制表符等),勾选“第一行是表头



还没有评论,来说两句吧...