Python移除输出换行符后结果为单词列表而非完整文本问题求助
问题原因
- 处理逻辑顺序错误:代码执行第一步就通过
re.split(r" ", raw)将完整文本按空格切割为独立片段列表,后续所有处理逻辑都作用在单个拆分后的片段上,直接破坏了文本原有连贯结构。 - 换行符替换操作无效:你将换行符替换步骤放在循环内,作用对象是已经被拆分后的单个片段,此时换行符要么被拆分到不同片段中,要么已经在切割步骤中被处理,这行替换代码完全不生效。
- 输出逻辑错误:循环内每次处理完单个片段就调用
print(Step4),Python的print函数默认会在输出末尾追加换行符,最终输出自然呈现为逐行的单词列表形式。
修正方案
调整处理顺序,先对完整文本做全局正则替换,再执行后续你需要的操作,不要提前拆分文本,示例修正代码如下:
import re import nltk from nltk import word_tokenize # 读取完整文本 f=open("/Applications/Python 3.9/cleaning text.txt",encoding='Latin-1') raw=f.read() f.close() # 记得关闭文件句柄 # 先对完整文本做全局替换 Step1 = re.sub(r"(\\.*)","",raw) Step2 = re.sub(r"(M)","hl",Step1) Step3 = re.sub(r"(\[aa\])","[a::]",Step2) # 全局替换换行符为空格 Step4 = re.sub(r"\n"," ",Step3) # 输出连贯完整文本 print(Step4) # 如果后续确实需要拆分单词,在得到完整Step4文本之后再做拆分即可 # Data = re.split(r" ", Step4)
内容的提问来源于stack exchange,提问作者Lindsay
相关产品推荐
相关产品推荐

