如何将TXT文件拆分为ID和句子两个列表并将句子拆分为单词列表
代码调整方案
现有代码问题
- 你使用制表符
\t作为分割符,但示例文件的ID和句子之间是多个空格分隔,分割逻辑不匹配,会导致切分失败 - 缺少句子拆分为单词的处理逻辑,无法生成要求的嵌套单词列表
修改后可直接运行的代码
path = "s.txt" id_list = [] word_nested_list = [] # 用with上下文管理器操作文件,执行完会自动关闭文件,更安全规范 with open(path, "r", encoding="utf-8") as read_file: for line in read_file: strip_line = line.strip() # 跳过空行避免运行报错 if not strip_line: continue # 整行最多按空格分割1次,分离ID和完整句子,不会拆分句子内部的空格 id_val, sentence = strip_line.split(maxsplit=1) id_list.append(id_val) # 句子转全小写后按空格拆分,得到单句的单词列表 word_list = sentence.lower().split() word_nested_list.append(word_list) # 输出验证结果 print("ID列表:", id_list) print("嵌套单词列表:", word_nested_list)
输出效果
- ID列表输出:
['1e.jpg#0', '2e.jpg#1', '3e.jpg#2', '4e.jpg#3'] - 嵌套单词列表输出格式和要求完全一致:
[ ["a", "dog", "going", "for", "a", "walk", "."], ["a", "boy", "is", "going", "to", "swim"], ["a", "girl", "is", "chasing", "the", "cat", "."], ["three", "people", "are", "going", "to", "a", "hockey", "game"] ]
如果需要去掉句子末尾的句号,可以把单词拆分的逻辑改成:
word_list = [w.strip('.') for w in sentence.lower().split()]
即可自动过滤单词前后的句号。
内容的提问来源于stack exchange,提问作者haruto
相关产品推荐
相关产品推荐

