Skip to main content
 首页 » 编程设计

python之如何使用 Python 和正则表达式从文件中提取文本部分

2024年09月03日29oomusou

我想使用 Python 读取一个文本文件,搜索一个字符串并打印该匹配字符串与另一个字符串之间的所有行。

文本文件如下所示:

Text=variables.Job_SalesDispatch.CaptionNew 
    Tab=0 
    TabAlign=0 
    } 
   } 
  } 
[UserVariables] 
 User1=@StJid;IF(fields.Fieldtype="Artikel.Gerät"  , STR$(fields.id,0,0)  , @StJid) 
[Parameters] 
 [@Parameters] 
  { 
  [Parameters] 
   { 
   LL.ProjectDescription=? (default) 
   LL.SortOrderID= 
   } 
  } 
[PageLayouts] 
 [@PageLayouts] 
  { 
  [PageLayouts] 
   { 
   [PageLayout] 
    { 
    DisplayName= 
    Condition=Page() = 1 
    SourceTray=0 

现在我想打印所有“UserVariables”,所以只打印 [UserVariables] 和以方括号开头的下一行之间的行。在此示例中,这将是 [Parameters]。

到目前为止我所做的是:

with open("path/testfile.lst", encoding="utf8", errors="ignore") as file: 
 
  for line in file: 
    uservars = re.findall('\b(\w*UserVariables\w*)\b', line) 
    print (uservars) 

什么只给我 []。

请您参考如下方法:

如果使用正则表达式对您来说不是强制性要求,您可以使用以下内容:

with open("path/testfile.lst", encoding="utf8", errors="ignore") as file: 
  inside_uservars = False 
  for line in file: 
    if inside_uservars: 
      if line.strip().startswith('['): 
        inside_uservars = False 
      else: 
        print(line) 
    if line.strip() == '[UserVariables]': 
      inside_uservars = True