我有一个函数,用户传入一个文件和一个字符串,代码应该删除特定的分隔符。我无法完成我循环遍历代码的部分并摆脱每个replacements
。我将在下面发布代码
def forReader(filename):
try:
# Opens up the file
file = open(filename , "r")
# Reads the lines in the file
read = file.readlines()
# closes the files
file.close()
# loops through the lines in the file
for sentence in read:
# will split each element by a spaace
line = sentence.split()
replacements = (',', '-', '!', '?' '(' ')' '<' ' = ' ';')
# will loop through the space delimited line and get rid of
# of the replacements
for sentences in line:
# Exception thrown if File does not exist
except FileExistsError:
print('File is not created yet')
forReader("mo.txt")
mo.txt
for ( int i;
运行文件mo.txt
后,我希望输出看起来像这样
for int i
答案 0 :(得分:1)
这是使用正则表达式执行此操作的方法。首先,我们创建一个由所有分隔符字符组成的模式,小心地将它们转义,因为这些字符中的一些在正则表达式中具有特殊含义。然后我们可以使用re.sub
用空字符串替换每个分隔符。这个过程可以给我们留下两个或多个相邻的空间,然后我们需要用一个空格替换它。
Python re
模块允许我们编译经常使用的模式。从理论上讲,这可以使它们更有效率,但最好根据实际数据测试这些模式,看看它是否真的有用。 :)
import re
delimiters = ',-!?()<=;'
# Make a pattern consisting of all the delimiters
pat = re.compile('|'.join(re.escape(c) for c in delimiters))
s = 'for ( int i;'
# Remove the delimiters
z = pat.sub('', s)
#Clean up any runs of 2 or more spaces
z = re.sub(r'\s{2,}', ' ', z)
print(z)
<强>输出强>
for int i