Python 如何从多个txt文件中删除多个字符

Python 如何从多个txt文件中删除多个字符,python,Python,我正在尝试编写一个脚本来自动完成从txt文件中删除字符的简单任务,我想用相同的名称保存它,但不使用字符。我有多个txt文件:例如1.txt,2.txt。。。200.txt,存储在目录(文档)中。我有一个txt文件,其中包含要删除的字符。一开始我想把我的chars_to_remove.txt与我所有的不同文件(1.txt,2.txt…)进行比较,但我可以找到一种方法。相反,我创建了一个字符串,其中包含所有我想删除的字符 假设我在1.txt文件中有以下字符串: 马德里和巴塞罗那(西班牙)2020年3

我正在尝试编写一个脚本来自动完成从txt文件中删除字符的简单任务,我想用相同的名称保存它,但不使用字符。我有多个txt文件:例如1.txt,2.txt。。。200.txt,存储在目录(文档)中。我有一个txt文件,其中包含要删除的字符。一开始我想把我的chars_to_remove.txt与我所有的不同文件(1.txt,2.txt…)进行比较,但我可以找到一种方法。相反,我创建了一个字符串,其中包含所有我想删除的字符

假设我在1.txt文件中有以下字符串:

马德里和巴塞罗那(西班牙)2020年3月、2019年3月和2018年3月,平均浓度α、最大值比β、以及由于关闭Δ而导致的NO2减少

我想从字符串中删除
α
β
Δ
字符。这是我的代码

导入全局
导入操作系统
chars_to_remove=''”| n.d..•∈αβδΔεθϑφΣμτσχ€$∞http:www。←→≥≤▷×°±*⁃'
file_location=os.path.join('Desktop','Documents','*.txt')
文件名=glob.glob(文件位置)
打印(文件名)
对于文件名中的f:
outfile=open(f,'r',encoding='latin-1')
data=outfile.read()
如果在数据中删除字符:
数据。替换(字符到删除“”)
outfile.close()
变量
data
在每次迭代中存储txt文件中的所有内容。我想检查字符串中是否有要删除的字符,并使用
replace()
函数将其删除。我尝试了不同的方法,但没有成功

此外,我还尝试将其作为列表进行比较:

chars_to_remove = ['‘','’','“','”','|','n.d.','…','•','∈','α','β','δ','Δ','ε','θ','ϑ','φ','Σ','μ','τ','σ','χ','€','$','∞','http:','www.','←','→','≥','≤','<','>','▷','×','°','±','*','⁃']
chars_to_remove=['','','','','','',''n.d.,''n.d.,'','',''•'','∈','α','β','δ','Δ','ε','θ','ϑ','φ','Σ','μ','τ','σ','χ','€','$','∞','http:'、'www.'、'←','→','≥','≤','','▷','×','°','±','*','⁃']
但在比较时出现数据类型错误

任何进一步的想法将不胜感激

最有效的方法是string.translate,以便在每个无效字符上避免循环。 必须以某种方式定义Outfile

import glob 
import os
from string import maketrans

chars_to_remove = '‘’“”|n.d.…•∈αβδΔεθϑφΣμτσχ€$∞http:www.←→≥≤<>▷×°±*⁃'
translator = maketrans(chars_to_remove,'\0'*len(chars_to_remove))

file_location = os.path.join('Desktop', 'Documents', '*.txt')
file_names = glob.glob(file_location)
print(file_names)

for f in file_names:
    infile = open(f,'r',encoding='latin-1')
    data = infile.read()
    data.translate(translator).replace('\0','')
    infile.close()
    
    #Now data is translated
    # You must write it in a new file
    with open('...','wt') as outfile:
        outfile.write(data)
        
导入全局
导入操作系统
从字符串导入maketrans
chars_to_remove=''”| n.d..•∈αβδΔεθϑφΣμτσχ€$∞http:www。←→≥≤▷×°±*⁃'
translator=maketrans(字符到删除,'\0'*len(字符到删除))
file_location=os.path.join('Desktop','Documents','*.txt')
文件名=glob.glob(文件位置)
打印(文件名)
对于文件名中的f:
infle=open(f,'r',encoding='latin-1')
data=infle.read()
data.translate(translator.replace('\0','')
infle.close()
#现在数据被翻译了
#您必须将其写入新文件中
以open(“…”,“wt”)作为输出文件:
outfile.write(数据)
打 这段代码可以工作,但效率很低,文件在内存中被完全加载。
更好的方法是滚动infle,同时在outfile上写入。

速度可能没有那么快,但为什么不使用Regex删除字符/短语呢

重新导入
模式=重新编译|∈|α|β|δ|Δ|ε|θ|ϑ|φ|Σ|μ|τ|σ|χ|€|$|∞|http:| www|←|→|≥|≤||▷|×|°|±|\*|⁃)")
结果=模式.sub(“,”马德里和巴塞罗那(西班牙)2020年3月、2019年3月和2018年3月的平均浓度α、最大值比β和因锁定Δ而导致的NO2减少量)。”
打印(结果)
输出
此外,您还需要将
数据
写回文件。
对于chars-in-chars-to-remove:if-char-in-data:…
Mean concentrations , maximum value ratio  and reductions in NO2 due to the lockdown , March 2020, 2019 and 2018 in Madrid and Barcelona (Spain).