Python代码,用于在管道斜线文件中将模式'abc'替换为'*'

问题描述 投票:0回答:2

我是Python的新手,我有一个用竖线分隔的文件,我想用单引号括起来的字符用'*'代替,这些字符出现在最后一列/第四列。

abc | 123 | xyz | 456 |从表emp中选择*,其中custname ='John'xyz | 123 |'John'| 789 |从表emp中选择*'John'| 456 | abc | 123 |从表emp中选择abc

在上面的示例中,您可以在单引号中看到'John'。我想用'*'掩盖'John'。在第二和第三行中,您可以在单引号中看到“ John”,我不想屏蔽它,因为那些不在最后一列中。

我的要求是屏蔽最后一列中单引号中的数据。

预期输出:

abc | 123 | xyz | 456 |从表emp中选择*,其中custname ='*'xyz | 123 |'John'| 789 |从表emp中选择*'John'| 456 | abc | 123 |从表emp中选择abc

python design-patterns pipe mask delimited
2个回答
0
投票

希望您觉得有用。

# save your text as a variable
text = """abc|123|xyz|456|select * from table emp where custname='John'
xyz|123|'John'|789|select * from table emp
'John'|456|abc|123|select abc from table emp"""

import re
name = re.findall("='(.*)'\n",text)[0]
print(text.replace("'"+name+"'\n","'*'\n"))

0
投票

enter image description here

[重要的是检查第四列的最后一个字符是否是单引号,如果是,请使用字符串操作(无论您认为方便如何)用*代替单引号中的名称,您可以在下面找到并举例:

import csv

with open('filer.txt', newline = '') as this_file:                                                                                          
        file_reader = csv.reader(this_file, delimiter='\n')
        for line in file_reader:
            if line[0][-1] == "'":
                position = line[0].rfind("'",0,len(line)-2)
                line = line[0][:position]+"'*'"
                print(line)
            else:
                print(line[0])
© www.soinside.com 2019 - 2024. All rights reserved.