如何使用Python或NLTK将每个文本文件的全部内容存储为列表的单个元素
实现将完整文本文件内容作为单个列表元素的解决方案
原有代码问题说明
你的现有代码存在几个问题导致无法达成需求:
- 定义的
textfile_list中文件名未用引号包裹,属于语法错误,字符串类型的文件名必须用引号标注 - 路径拼接缺少分隔符,
/user/documents和文件名拼接时中间没有/,会导致路径错误无法找到文件 - 使用
text += file_text是把所有文件内容拼接为单个长字符串,没有存入列表的不同元素 - 之前出现单个字符作为列表元素的问题,大概率是你后续对字符串类型的文件内容做了迭代/列表转换操作,而非直接把整个字符串作为单个元素存入列表
实现方案
方案1:原生Python实现(推荐,无额外依赖)
直接用Python内置的文件读取方法读取完整内容,逐个存入列表即可:
# 存储所有文件内容的结果列表 content_list = [] # 文件名必须用引号包裹为字符串格式 textfile_list = ["file1.txt", "file2.txt", "file3.txt", ".......", "file76.txt"] for f in textfile_list: # 拼接完整的文件路径 file_path = f'/user/documents/{f}' # 打开文件读取全部内容 with open(file_path, 'r', encoding='utf-8') as fp: full_file_content = fp.read() # 把完整内容作为单个元素追加到列表 content_list.append(full_file_content) # 验证结果 print(len(content_list)) # 输出76即和文件数量匹配 print(content_list[0]) # 输出第一个文件的全部内容
方案2:NLTK实现
如果需要使用NLTK完成,直接将nltk.data.load返回的完整字符串追加到列表即可,不要对返回的字符串做拆分操作:
import nltk content_list = [] textfile_list = ["file1.txt", "file2.txt", "file3.txt", ".......", "file76.txt"] for f in textfile_list: file_path = f'/user/documents/{f}' file_text = nltk.data.load(file_path) # 直接追加完整字符串,不要迭代/拆分file_text content_list.append(file_text)
两种方案都可以实现每个文件的完整内容作为列表单个元素的需求,不会出现拆分行、拆分字符的问题。
内容的提问来源于stack exchange,提问作者David R
相关产品推荐
相关产品推荐

