我是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
希望您觉得有用。
# 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"))
[重要的是检查第四列的最后一个字符是否是单引号,如果是,请使用字符串操作(无论您认为方便如何)用*代替单引号中的名称,您可以在下面找到并举例:
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])