有一个excel文件标题是酒店名称客户整体评价入住时间好的方面差的方面五列文件内容是多家酒店的客户评论一个酒店的评论写在了一起不同的酒店之间空了一行需要读取这个excel文件将每个酒店的评论内容里面的好的方面差的方面这两列单独写入txt文本文件txt文本不要表头文件名是酒店名称;所有酒店的文本文件放在名字为hotels_comments这个文件夹下怎么写python代码?为什么这段代码结果是每个文
可能是因为每次遍历到一行有好的方面或差的方面的时候都会重新打开txt文件并写入当前行的好的方面或差的方面,而不是将所有评论的好的方面和差的方面分别累加到同一个txt文件中。可以修改代码如下:
import pandas as pd
import re
import os
# 读取Excel文件
df= pd.read_excel(r'C:\Users\yuxin\Desktop\booking成都所有三&四星级酒店评分和评价.xlsx', sheet_name='90家四星级评价')
# 创建存储文本文件的文件夹
if not os.path.exists(r'G:\python\booking情感分析\hotels_comments_txt'):
os.mkdir(r'G:\python\booking情感分析\hotels_comments_txt')
# 遍历每一行
hotel_name = ''
good_comments = ''
bad_comments = ''
for index, row in df.iterrows():
if pd.notnull(row['酒店名称']): # 如果该行有酒店名称
if hotel_name:
# 如果之前有遍历到过酒店名称,则将之前累积的好的方面和差的方面写入对应txt文件
with open(f'G://python//booking情感分析//hotels_comments_txt//{hotel_name}.txt', 'w', encoding='utf-8') as f:
f.write(good_comments + '\n')
f.write(bad_comments + '\n')
# 重置当前酒店名称和评论
hotel_name = re.sub('[^\w]', '', row['酒店名称'])
good_comments = ''
bad_comments = ''
if pd.notnull(row['好的方面']): # 如果该行有好的方面
# 将好的方面累加到当前酒店的好的方面评论中
good_comments += row['好的方面'] + ' '
if pd.notnull(row['差的方面']): # 如果该行有差的方面
# 将差的方面累加到当前酒店的差的方面评论中
bad_comments += row['差的方面'] + ' '
# 写入最后一个酒店的评论
if hotel_name:
with open(f'G://python//booking情感分析//hotels_comments_txt//{hotel_name}.txt', 'w', encoding='utf-8') as f:
f.write(good_comments + '\n')
f.write(bad_comments + '\n')
修改后的代码会在遍历到每个酒店的最后一行时将累积的好的方面和差的方面分别写入对应的txt文件中,并重置当前酒店名称和评论。同时,修改后的代码还会在遍历完所有行后再次检查是否还有未写入的酒店评论,并将其写入对应的txt文件中
原文地址: https://www.cveoy.top/t/topic/fJcs 著作权归作者所有。请勿转载和采集!