感谢你们的帮助!巨大的帮助
到目前为止,这是我的脚本,
import re
bad_words = '[^a-zA-Z\d\s:]'
with open('keywords.txt', encoding="utf8") as oldfile, open('newfile.txt', 'w') as newfile:
for line in oldfile:
if not re.search(bad_words, line):
newfile.write(line)
lines_seen = set() # holds lines already seen
outfile = open('cleankeywords.txt', "w")
for line in open('newfile.txt', "r", encoding="utf8"):
if line not in lines_seen: # not a duplicate
outfile.write(line)
lines_seen.add(line)
outfile.close()
如何通过删除处理的中间文件来提高效率:newfile.txt
这样两个动作都会在彼此之后发生。另外有一种方法可以使用tkinter,输出名称和目录等来确定输入文件的位置
谢谢!
答案 0 :(得分:0)
你写它的方式,你正在检查整个字符串是否符合要求。
如果bad_words是正则表达式,则必须使用re
模块来处理它。
import re
bad_words = '[^a-zA-Z\d\s:]'
with open('keywords.txt') as oldfile, open('newfile.txt', 'w') as newfile:
for line in oldfile:
if not re.match(bad_words, line):
newfile.write(line)
如果您有一个非允许字符的列表(或字符串),您的代码就可以工作,那么您可以使用您的算法迭代它并检查:
bad_words = ['/',':','.','%','#','$','*',.....]
#or if bad_words was a string like '%$£#@!¨&(*&)'
if not any(bad_word in line for bad_word in bad_words):
newfile.write(line)
但是在处理正则表达式时,您应该使用re
。