首页 » 编程设计

python之如何使用连接和正则表达式

2024年12月31日26jiqing9006

我正在尝试在引号 (") 和空格后添加\n。

我能找到的最接近的是 re.sub 但是它删除了某些字符。

line = 'Type: "SecurityIncident" RowID: "FB013B06-B04C-4FEB-A5A5-3B858F910F29"' 
q = re.sub(r'[\d\w]" ', '\n', line) 
print(q) 

输出:

Type: "SecurityInciden\nRowID: "FB013B06-B04C-4FEB-A5A5-3B858F910F2\n

寻找不删除任何字符的解决方案。

请您参考如下方法:

您尝试的正则表达式 [\d\w]"几乎没问题,但有一些小缺点。你不需要写 \d与 \w在一个字符集中,它是冗余的 \w已经包含 \d在里面。自 \w单独就足以表示字母或数字或下划线,因此无需将其包含在字符集 [] 中。因此你可以写\w并且您更新的正则表达式变为 \w" .

但是现在,如果您匹配此正则表达式并将其替换为 \n它将匹配文字字母 t然后 "和一个空格,它将被替换为 \n这就是为什么你得到这个输出,

SecurityInciden\nRowID 

您需要在 group1 中捕获匹配的字符串,并且在替换时,您需要在替换时使用它,这样就不会被替换,因此您应该使用 \1\n作为替换而不仅仅是 \n

试试这个更新的正则表达式,

(\w" ) 

并将其替换为\1\n

Demo1

如果您注意到,第一行的行尾有一个额外的空格,如果您不希望那里有那个空格,您可以从那些捕获括号中取出那个空格并使用这个正则表达式,

(\w")  
     ^ space here 

Demo2

这是一个示例 python 代码,

import re 
 
line = 'Type: "SecurityIncident" RowID: "FB013B06-B04C-4FEB-A5A5-3B858F910F29"' 
q = re.sub(r'(\w") ', r'\1\n', line) 
print(q) 

输出,

Type: "SecurityIncident" 
RowID: "FB013B06-B04C-4FEB-A5A5-3B858F910F29" 


阅读延展