匹配与拆分

2024-09-30 02:14:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个包含以下内容的文件1:

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行中,它给出了一个错误说明 缩进错误:文件1的第3行出现意外缩进。有人能帮我吗


Tags: 文件path代码data错误unitabcmn
2条回答

什么是缩进错误

  • 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)    

注:

  • 你没有提到你想在什么基础上分割线。是用空格“u”还是“)”
  • 你当前的正则表达式不能做到这一点

您可以尝试以下方法:

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

输出:

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

相关问题 更多 >

    热门问题