Python:替换推文列表非标准词并取消打印内容条数限制
问题与解决方案
一、先修正替换逻辑的问题
你当前代码里equivalences变量未定义,而dlist是从文件读取的列表,结合你提到的标准词字典样式,推测文件每行是「非标准词 标准词」的格式,需要先把列表转换成键值对字典:
# 修正标准词读取逻辑,转为字典 equivalences = {} with open('Aword.txt','r') as dk: for line in dk.readlines(): # 假设每行用空格分隔非标准词和标准词,格式不符可替换为对应分隔符(如逗号) non_standard, standard = line.strip().split() equivalences[non_standard.lower()] = standard
二、解决打印内容不全的问题
情况1:推文存在Pandas DataFrame中
Pandas默认会截断长内容和部分行,修改显示设置即可完整打印:
import pandas as pd # 取消所有显示限制 pd.set_option('display.max_rows', None) # 显示所有行 pd.set_option('display.max_colwidth', None) # 显示完整推文内容,不截断 # 执行替换逻辑(替换成你的推文列名) for idx, tweet in enumerate(df['tweet_column']): for word in tweet.split(): if word.lower() in equivalences: tweet = tweet.replace(word, equivalences[word.lower()]) df.loc[idx, 'tweet_column'] = tweet # 打印所有内容 print(df)
情况2:推文是普通Python列表
直接循环遍历打印每条内容即可:
# 执行替换逻辑 for idx, tweet in enumerate(tweets): for word in tweet.split(): if word.lower() in equivalences: tweet = tweet.replace(word, equivalences[word.lower()]) tweets[idx] = tweet # 逐条打印所有推文 for tweet in tweets: print(tweet) print('---') # 可选:添加分隔线,提升可读性
三、替换逻辑优化建议
如果推文里存在标点和单词连在一起的情况(比如hello!),split()会把带标点的词当成整体,导致匹配失败,可改用正则匹配独立单词:
import re # 构建匹配独立单词的正则表达式 pattern = re.compile(r'\b(' + '|'.join(re.escape(k) for k in equivalences.keys()) + r')\b', re.IGNORECASE) # 批量替换 for idx, tweet in enumerate(df['tweet_column']): df.loc[idx, 'tweet_column'] = pattern.sub(lambda m: equivalences[m.group().lower()], tweet)
内容的提问来源于stack exchange,提问作者Zulfi A
相关产品推荐
相关产品推荐

