繁体   English   中英

匹配和拆分

[英]matching and splitting

我有一个包含内容的 file1:

abc_1 (qst_0) bndk
cgn32 (mn_r_1) mncp
 dmj_2 (yst) pr1f

我想逐行匹配和拆分文件。 我使用以下代码:

path = sys.argv[1]
 with open(path) as f:
  data = f.read()
 unit = re.split(r"(.+\(.*\).+)", data)
 print(*unit)

它能够拆分前 2 行,但在第 3 行它给出了一个错误,说 IndentationError: Unexpected Indent at line 3 of file1。 你能帮我吗?

你可以试试这个:

with open(path) as f:
    data = f.read()
unit = [line.strip().split(" ") for line in data.split("\n")]
print(unit)

output:

[['abc_1', '(qst_0)', 'bndk'],
 ['cgn32', '(mn_r_1)', 'mncp'],
 ['dmj_2', '(yst)', 'pr1f']]

什么是缩进错误?

  • python 中的缩进错误是指关于空格的错误语法。

在第 3 行data=f.read()中,您没有正确遵循语法。 因此,在这种情况下,您的代码甚至没有执行输入文件中的任何一行。

在使用 python 时,确保一个块中有 4 个空格。 以下应该工作。

import re
import sys

path = sys.argv[1]

with open(path) as fp:
    for line in fp:
        print (re.split(r"(.+\(.*\).+)", line))

(或者)

import re
import sys

path = sys.argv[1]

with open(path) as fp:
    split_lines = [re.split(r"(.+\(.*\).+)", line) for line in fp]

print(split_lines)    

笔记:

  • 您还没有提到要在什么基础上拆分行。 是空格、“_”还是“)”?
  • 您当前的正则表达式不这样做。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM