复制字符串的特定部分,并基于正则表达式将addit添加到每行的开头,如果在Python2中不匹配,则传递



我有一组散列,我希望将USERNAME复制到每行的开头,后面跟着一个":"符号,然后用更改重写文件。

例如:

$krb5tgs$23$*USERNAME$realm$test/spn*$1345

将变成:

用户名:$krb5tgs$23$*用户名称$srealm$test/spn*$1345

输入将从文件中给出。到目前为止,我已经想出了这个办法,但还没有成功。

如有任何关于正确做法的建议,我们将不胜感激。

这个正则表达式可以按预期工作,因此希望将其合并。

'*(.*?)$'
L=file.txt
file_object = open(L, 'a+')                                                                                          
while True:                                                                                                          
lines = file_object.readline()                                                                               
match = re.search(r'*(.*?)$', lines)                                                                        
if match:                                                                                                     
for line in fileinput.input([L], inplace=1):                                                          
sys.stdout.write('TEST'.format(l=lin))                                                        
else:                                                                                                         
pass                                                                                                      
if not lines:                                                                                                 
break                                                                                                    
file_object.close()

第二次尝试:我可以让每一行都有"测试:";一开始,但无法根据上面的匹配得到一个if语句或类似的工作。

with open(L, 'r') as f:                                                                                               
lines = f.readlines()                                                                                            
lines = ['TEST:' + line for line in lines]                                                                            
with open(L, 'w') as f:                                                                                               
f.writelines(lines)   

用户名似乎是由序列$*引入的,并以$结尾。您应该将该部分作为正则表达式。字符串中还有其他以*开头的内容,因此仅查找它可能是不够的。我认为$*([^$]+)$可能更好。

re.search()返回一个匹配对象,即None,因此很容易看出何时修改一行,何时不修改它。

此外,养成使用上下文管理器(with块(处理文件的习惯,而不是手动调用.close()

username_re = re.compile(r'$*([^$]+)$')
with open('file.txt', 'r') as f:
lines = list(f)
with open('file.txt', 'w') as f:
for line in lines:
match = username_re.search(line)
if match:
line = match.group(1) + ':' + line
f.write(line)

为输出写入不同的文件消除了在出现错误时破坏输入文件的风险。

相关内容

  • 没有找到相关文章

最新更新