如何去除多个 space、换行符和制表符,只将单个 space 放入文本文件中?
How to strip multiple spaces, newline and tabs and just put single space in a text file?
我有来自 here 的莎士比亚全集数据,我想在词嵌入算法中使用这些数据来创建模型。该模型的要求是整个文本只提供单个空格,不存在其他类型的空格。我该如何执行此操作?我找到了如何对单个字符串执行此操作,但它不适用于文本文件。
我的尝试(我不是很了解python):
with open(file_path, 'r') as data:
for line in data:
cleanedline = line.strip('\n')
cleanedline 在打印时没有删除 \n
,所以我没有将它们写回到文件中。
你可以试试正则表达式:
import re
with open(file_path) as data:
text = re.sub(r'\s+', ' ', data.read())
\s+
正则表达式模式将匹配一个或多个白色space 字符的任意序列。 re.sub()
将用匹配的文本替换单个 space。
白色space由space、制表符、换行符、return、换页、垂直制表符等字符组成,不包括标点符号。
不使用正则表达式的另一种方法是使用 split()
然后 join()
:
with open(file_path) as data:
text = ' '.join(data.read().split())
我有来自 here 的莎士比亚全集数据,我想在词嵌入算法中使用这些数据来创建模型。该模型的要求是整个文本只提供单个空格,不存在其他类型的空格。我该如何执行此操作?我找到了如何对单个字符串执行此操作,但它不适用于文本文件。
我的尝试(我不是很了解python):
with open(file_path, 'r') as data:
for line in data:
cleanedline = line.strip('\n')
cleanedline 在打印时没有删除 \n
,所以我没有将它们写回到文件中。
你可以试试正则表达式:
import re
with open(file_path) as data:
text = re.sub(r'\s+', ' ', data.read())
\s+
正则表达式模式将匹配一个或多个白色space 字符的任意序列。 re.sub()
将用匹配的文本替换单个 space。
白色space由space、制表符、换行符、return、换页、垂直制表符等字符组成,不包括标点符号。
不使用正则表达式的另一种方法是使用 split()
然后 join()
:
with open(file_path) as data:
text = ' '.join(data.read().split())