python - 需要帮助编写代码修改 txt 文件的内容,然后将其保存为 json 文件中的字典(它包含情感数据)
问题描述
我在 txt 文件中保存了一些句子以及它们相应的情绪。它旨在训练机器学习分类器。但是,我想重组txt文件的内容,然后将其保存为json。下面我将解释我想要的前后结构。
txt文件以以下格式保存:
FIRST LINE OF TEXT .@negative
SECOND LINE OF TEXT .@neutral
如您所知,每个句子都保存在单独的行中,后跟一个空格,然后是分隔符(在本例中为 .@),然后是句子的指定情绪。
这是我想要的 json 文件格式:
[{'message_body': 'FIRST LINE OF TEXT', 'sentiment': -1}, {'message_body': 'SECOND LINE OF TEXT', 'sentiment': 0}]
所以这里我们有一个开括号,后跟一个带有 2 个键(消息正文和情绪)的字典,其中消息正文键包含文本句子,情绪键包含情绪的数值(负数为 -1,正数为 1中性为0)。因此它实际上保存为字典列表,每个字典对应于原始 txt 文件中的 1 行。
有谁知道我可以编写代码为我做这件事的方法吗?我假设这将是某种 for 循环,但字典不是我的强项。提前致谢!
编辑:在将 txt 文件保存为 csv 后,想出了一个有点冗长的方法:
import pandas as pd
data_csv = pd.read_csv(filepath_or_buffer='text.csv' , sep='.@', header=None, names=['sentence','sentiment'])
list_data = []
for index, row in data_csv.iterrows():
dictionary_data = {}
dictionary_data['message_body'] = row['sentence']
if row['sentiment'] == 'positive':
dictionary_data['sentiment'] = 1
elif row['sentiment'] == 'negative':
dictionary_data['sentiment'] = -1
else:
dictionary_data['sentiment'] = 0
list_data.append(dictionary_data)
解决方案
You could do the following:
# read the file into a list of lines
with open("input.txt") as f:
lines = f.readlines()
# set up empty dictionary
rv = []
# for each line, split into text and sentiment
for x in lines:
line_dict = {'message_body': x.split('.@')[0].strip()}
value = x.split('.@')[1].strip()
# Apply sentiment logic
if value == 'positive':
line_dict['sentiment'] = 1
elif value == 'negative':
line_dict['sentiment'] = -1
else:
line_dict['sentiment'] = 0
rv.append(line_dict)
Output:
>>> rv
[{'message_body': 'FIRST LINE OF TEXT', 'sentiment': -1},
{'message_body': 'SECOND LINE OF TEXT', 'sentiment': 0}]
推荐阅读
- javascript - 防止 EJS 文件被 Redis 缓存
- c# - 在 ASP.NET asmx webservice 中捕获 HTML 标记?
- java - 使用类和构造函数确定数组实现的输出
- rust - 无法理解 &mut &mut 参考
- python - 使用 Python 的 OpenVPN 连接 (Windows)
- algorithm - 在给定的两个时间段内可以完成的最大工作数 [双背包?]
- postgresql - 在postgres中计算连续天数
- javascript - Web Animations API 将一个动画添加到多个元素
- php - 按停机时间销毁 PHP 会话
- android - 是否可以以编程方式更改 Spinner 主题?