Python 从文本文件中删除标点符号
Python remove punctuation from a text file
我正在尝试从我的文本文件中删除标点符号列表,但我只遇到一个与连字符分隔的单词的问题。例如,如果我有单词 "post-trauma" 我得到 "posttrama" 相反我想得到 "post" "trauma".
我的代码是:
punct=['!', '#', '"', '%', '$', '&', ')', '(', '+', '*', '-']
with open(myFile, "r") as f:
text= f.read()
remove = '|'.join(REMOVE_LIST) #list of word to remove
regex = re.compile(r'('+remove+r')', flags=re.IGNORECASE)
out = regex.sub("", text)
delta= " ".join(out.split())
txt = "".join(c for c in delta if c not in punct )
有办法解决吗?
我相信你可以调用 delta 的内置 replace
函数,所以你的最后一行将变成以下内容:
txt = "".join(c for c in delta.replace("-", " ") if c not in punct )
这意味着您文本中的所有连字符都将变成空格,因此这些词将被视为是分开的。
上述方法可能不起作用,因为您仍然从初始字符串中删除了所有破折号(“-”)字符。如果您希望它起作用,请将其从 punct 列表中删除。更新后的代码如下所示:
punct=['!', '#', '"', '%', '$', '&', ')', '(', '+', '*']
with open(myFile, "r") as f:
text= f.read()
remove = '|'.join(REMOVE_LIST) #list of word to remove
regex = re.compile(r'('+remove+r')', flags=re.IGNORECASE)
out = regex.sub("", text)
delta= " ".join(out.split())
txt = "".join(c for c in delta.replace("-", " ") if c not in punct )
问题出在您将 punct 中的所有字符替换为空字符串,并且您需要 space 来表示“-”。因此,您需要替换字符两次(一次是空字符串,一次是 space)。
我正在尝试从我的文本文件中删除标点符号列表,但我只遇到一个与连字符分隔的单词的问题。例如,如果我有单词 "post-trauma" 我得到 "posttrama" 相反我想得到 "post" "trauma".
我的代码是:
punct=['!', '#', '"', '%', '$', '&', ')', '(', '+', '*', '-']
with open(myFile, "r") as f:
text= f.read()
remove = '|'.join(REMOVE_LIST) #list of word to remove
regex = re.compile(r'('+remove+r')', flags=re.IGNORECASE)
out = regex.sub("", text)
delta= " ".join(out.split())
txt = "".join(c for c in delta if c not in punct )
有办法解决吗?
我相信你可以调用 delta 的内置 replace
函数,所以你的最后一行将变成以下内容:
txt = "".join(c for c in delta.replace("-", " ") if c not in punct )
这意味着您文本中的所有连字符都将变成空格,因此这些词将被视为是分开的。
上述方法可能不起作用,因为您仍然从初始字符串中删除了所有破折号(“-”)字符。如果您希望它起作用,请将其从 punct 列表中删除。更新后的代码如下所示:
punct=['!', '#', '"', '%', '$', '&', ')', '(', '+', '*']
with open(myFile, "r") as f:
text= f.read()
remove = '|'.join(REMOVE_LIST) #list of word to remove
regex = re.compile(r'('+remove+r')', flags=re.IGNORECASE)
out = regex.sub("", text)
delta= " ".join(out.split())
txt = "".join(c for c in delta.replace("-", " ") if c not in punct )
问题出在您将 punct 中的所有字符替换为空字符串,并且您需要 space 来表示“-”。因此,您需要替换字符两次(一次是空字符串,一次是 space)。