小编san*_*you的帖子

re.search无法在文件中找到正则表达式模式

我有测试文件(test.txt)如下:

`RANGE(vddout,sup)

`RANGE(vddin,sup_p) 
Run Code Online (Sandbox Code Playgroud)

我想修改这个文件如下:

`RANGE(vddout,sup,tol_sup)

`RANGE(vddin,sup_p,tol_sup_p)
Run Code Online (Sandbox Code Playgroud)

这是我尝试的代码,但它无法使用re.search找到并替换模式.你能指出代码中的缺陷在哪里吗?

 with open("test.txt", 'r+') as file :
    for line in file:
        print("line={}".format(line))
        findPattern=re.search(r'(`RANGE\(\w+,(\w+))\)',line)
        if findPattern:
            print("findPattern={}".format(findPattern))
            line=re.sub(r'(`RANGE\(\w+,(\w+))\)',r'\1,tol_\2',line)
Run Code Online (Sandbox Code Playgroud)

python regex file python-3.x

5
推荐指数
1
解决办法
57
查看次数

向列表的每个元素添加引号和括号

我需要处理一个 python 列表,如下所示:

PGPrimary=['VDD', 'VSS', 'A', 'Y']
Run Code Online (Sandbox Code Playgroud)

我需要将此列表更改为以下格式:

//PG PRIMARY  ("VDD") ("VSS") ("A") ("Y")
Run Code Online (Sandbox Code Playgroud)

我尝试了下面的代码,但它不起作用:

PGPrimary=['VDD', 'VSS', 'A', 'Y']
print("1:PGPrimary:",PGPrimary)

PGPrimary="//PG PRIMARY " + ' '.join(PGPrimary)
(','.join('("' + item + '")' for item in PGPrimary))


print("2:PGPrimary:",PGPrimary)
Run Code Online (Sandbox Code Playgroud)

这是输出:

('1:PGPrimary:', ['VDD', 'VSS', 'A', 'Y'])
('2:PGPrimary:', '//PG PRIMARY VDD VSS A Y')
Run Code Online (Sandbox Code Playgroud)

进程已完成,退出代码为 0

谁能指出为什么代码不起作用?

python

3
推荐指数
1
解决办法
7125
查看次数

匹配Python中行开头的字符串

我想在文本文件中的每一行的开头搜索某个模式.

这是文本文件的内容:

module abc ( A, B, C, NSUP, PSUP, SEL );
input NSUP;
input PSUP;
input SEL;
inout A;
inout B;
output C;
//sample text input pins
//sample text output pins
Run Code Online (Sandbox Code Playgroud)

我希望输出为

NSUP
PSUP
SEL
A
B
C
Run Code Online (Sandbox Code Playgroud)

我尝试下面的代码,但它打印一个空列表作为输出:

fh=open("VamsModel","r")
contents=fh.read()
inoutPortList=re.compile(r'^(input|output|inout)\s+(\w+)')
matches = inoutPortList.finditer(contents)

for match in matches:
    print(match.group(2))
Run Code Online (Sandbox Code Playgroud)

如果我从re.compile模式中删除"^"然后它可以工作,但它只会在开始时查找模式.

inoutPortList=re.compile(r'(input|output|inout)\s+(\w+)')
Run Code Online (Sandbox Code Playgroud)

上面的正则表达式也将从我的文本文件输出最后两行(如下所示),我不想要:

//sample text input pins
//sample text output pins
Run Code Online (Sandbox Code Playgroud)

当我使用"^"时,为什么我的正则表达式无法工作的任何想法?

python

1
推荐指数
1
解决办法
215
查看次数

始终在零时刻阻止执行

我想在零时刻执行总是阻塞.例如,下面的代码将不会在零时执行.

always @* begin
//functional code
end
Run Code Online (Sandbox Code Playgroud)

我在最后移动了敏感度列表,以便代码将在零时执行,

always begin
//funcitonal code
@*;
end
Run Code Online (Sandbox Code Playgroud)

此代码在零时执行,但在零时间之后根本不执行,即使块内使用的输入发生了变化.例如,请参阅下面的代码及其输出:

module AlwaysTimeZeroTest_v();

reg reg_A;

initial begin
  $display ("I'm in Initial begin block       \tTime=%f, reg_A=%b\n",$stime,reg_A);
  #1
  reg_A=1'bZ;

  #1
  reg_A=1'b1;

  #1
  reg_A=1'b0;

  #1
  reg_A=1'bZ;

  #5 $finish;
end

always @* begin
    $display ("I'm in Non-time Zero always block\tTime=%f, reg_A=%b\n",$stime,reg_A);
end

always begin
   $display ("I'm in time Zero always block     \tTime=%f, reg_A=%b\n",$stime,reg_A);
    @*;
end

endmodule
Run Code Online (Sandbox Code Playgroud)

输出:

**I'm in Initial begin block              Time=0.000000, reg_A=x

I'm in time Zero always block …
Run Code Online (Sandbox Code Playgroud)

verilog system-verilog

0
推荐指数
1
解决办法
734
查看次数

标签 统计

python ×3

file ×1

python-3.x ×1

regex ×1

system-verilog ×1

verilog ×1