python读取文本文件,按行分割为list格式的最佳实践
发布于 作者:苏南大叔 来源:程序如此灵动~ 我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...
本文的.txt
文本转list
的问题,还是由机器学习中的CountVectorizer
词袋模型所引起的。停用词列表需要一个list
格式变量,而停用词列表又基本上都存放在.txt
文本文件里面。所以,这里需要对两者做个转化。本文代码的输入是stopwords.txt
文本,输出是类型为list
的stop_words_list
变量。
苏南大叔的“程序如此灵动”技术博客,记录苏南大叔的代码经验总结。本文测试环境:win10
,python@3.11.0
。注意:本文的代码里面如果出现了set
的字样,就意味着顺序被打乱了,因为set
天然无序。
方案一
# rb:代表二进制文件
with open("./stopwords.txt", "rb") as fp:
stopwords = fp.read().decode("utf-8")
stop_words_list = list(set(stopwords.splitlines()))
print(stop_words_list)
这个方案是先整体读取.txt
文本,然后使用基于str
类型的.splitlines()
进行分割形成数组。
方案二
# r:代表文本文件
stop_words_list = []
with open("./stopwords.txt", "r", encoding="utf-8") as f:
lines = f.readlines() # ['苏南大叔\n', '技术博客\n', '北京大学']
for line in lines:
stop_words_list.append(line.strip()) # ['苏南大叔', '技术博客', '北京大学']
stop_words_list = list(set(stop_words_list))
print(stop_words_list)
这个方案是本来就是按行读取,只不过是再遍历加工了一次。
方案三
with open("./stopwords.txt", "r", encoding="utf-8") as f:
lines = f.readlines()
stop_words_list=list(set( [x.strip() for x in lines] ))
和上一个方案差不多,就是写法更简洁了一些。里面使用了推导式的写法,参考:
相关文章
结语
代码最后,先转化为set
,再转为list
的原因是:利用set
天然去重的特性,去掉文本中的重复项目。当然,带来的副作用就是set
的天然无序特性。得出的结果可能和原本的设置顺序存在差异。
更多苏南大叔的python
经验文章,请点击:
如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。