您好我希望更改文件中的以下模式:
input [15:0] A;
output [15:0] B;
inout [4:0] C;
input [3:0] D;
inout [0:32] X;
output [5:2] Y;
为:
input A [15:0];
output B [15:0];
inout C [4:0];
input D [3:0];
inout X [0:32];
output Y [5:2];
使用python正则表达式实现此目的的最佳方法是什么?
这是我到目前为止所写的内容,它完成了这项工作,但我认为我可以提高效率。 1.它不会将多个空格转换为1。 我的正则表达式只寻找模式。* [po] ut。什么是一个好的正则表达式,可以在任何行的开头捕获输入/输出/输入? 3.如何修改它以编辑给定目录路径中的所有文件?
#!/usr/bin/python
import re
for line in fileinput.input(inplace=1):
line = re.sub(r'^(.*[po]ut)(\s+\[\d+:\d+])(\s+[a-zA-Z0-9_]*);',r'\1\3\2;',line.rstrip())
print(line)
答案 0 :(得分:0)
你可以试试这个:
s = ["input [15:0] A;", "output [15:0] B;", "inout [4:0] C;", "input [3:0] D;", "inout [0:32] X;", "output [5:2] Y;"]
import re
final_data = [re.sub("(?<=\w)\s+(?=\[)", " {} ".format(re.findall("[A-Z](?=\;)", i)[0]), i[:-2]) for i in s]
new_final_data = [re.sub("\s+$", ';', i) for i in final_data]
for i in new_final_data:
print(i)
输出:
input A [15:0];
output B [15:0];
inout C [4:0];
input D [3:0];
inout X [0:32];
output Y [5:2];