函数摆脱python中的delimeters

时间:2018-04-29 06:17:05

标签: python python-3.x

我有一个函数,用户传入一个文件和一个字符串,代码应该删除特定的分隔符。我无法完成我循环遍历代码的部分并摆脱每个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

1 个答案:

答案 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