读取文本文件时删除标点符号[python]

时间:2017-10-08 04:15:13

标签: python

我正在编写一个python程序,它将文本文件的内容读入数组/列表,但是我无法从文本文件中删除标点符号。这是我尝试过的:

def read_file(self,filename):
    name_file = filename
    filename = open(name_file, 'r')
    file = filename
    punctuations = '''!()-[]{};:'"\,<>./?@#$%^&*_~'''
    no_punct = ""
    lst = []
    for word in file:
        word = word.strip('\n')
        for char in punctuations:
            word = word.strip(char)
        lst.append(word)


    filename.close()

在我删除char的部分中,我注意到word文件中内容的顺序也发生了变化,并且没有完全删除一些标点符号。

如果我使用'replace'方法,它运行良好,但我正在寻找一种不使用替换内置函数的方法。

1 个答案:

答案 0 :(得分:2)

我注意到的一些事情只会导致部分标点符号被删除。第for word in file:行应该是for line in file:。 Python按行而不是单词迭代文件。 strip函数仅从开头和结尾删除项目。您可以使用replace函数从中间删除字符。程序当前的编写方式,只会删除文档中每行开头和结尾的标点符号。

我删除所有标点符号的方式就是这样。

from pathlib import Path
import string

filepath = Path(filename)
text = filepath.read_text()
text = text.replace(string.punctuation, "")
filepath.write_text(text )

但是你说替换功能与电子书功能相混淆。你能解释一下吗?我不知道如何替换每个单词中的标点符号是否有任何不同,然后立即将整个文件替换为整个文件?