Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 2.7 如何匹配给定输入值的文本并添加缩进行_Python 2.7 - Fatal编程技术网

Python 2.7 如何匹配给定输入值的文本并添加缩进行

Python 2.7 如何匹配给定输入值的文本并添加缩进行,python-2.7,Python 2.7,我有以下示例文本文件。我指定了一个我想要搜索的输入值,在本例中是单词“car”,然后我想将匹配的行“thisacar”和它下面缩进两个空格的所有行添加到一个列表中 如何搜索文本(“这是一个”+我的输入值) 在与列表进行匹配后,我如何才能只添加缩进行 这是文本文件的示例: 这是一辆汽车 它是红色的 它有大轮子 手动变速器 这是一只狗 它是棕色的 还有长长的毛皮 我想它在伪代码中会像这样 def action(self, filename, input): with open(filen

我有以下示例文本文件。我指定了一个我想要搜索的输入值,在本例中是单词“car”,然后我想将匹配的行“thisacar”和它下面缩进两个空格的所有行添加到一个列表中

  • 如何搜索文本(“这是一个”+我的输入值)
  • 在与列表进行匹配后,我如何才能只添加缩进行
  • 这是文本文件的示例:

    这是一辆汽车
    它是红色的
    它有大轮子
    手动变速器

    这是一只狗
    它是棕色的
    还有长长的毛皮


    我想它在伪代码中会像这样

    def action(self, filename, input):
    
        with open(filename, 'rb') as f:
            text = f.readlines()
    
        output = []
    
        for lines in text:
            if ("this is a" + input) in lines:
                i = lines.strip()
                output.append(i)
                goto next line
                while there is a single space
                i = lines.strip()
                output.append(i)
    
    然后,如果我打印输出,我将看到以下内容:

    这是一辆汽车
    它是红色的
    它有大轮子

    手动变速器

    当您通过
    查找文本中的行时,会有一个标志,表明您当前是在查找起始文本(这是一辆车)还是在查找以下文本(以空格开头的行)

    在伪代码中:

    looking_for_indents = False
    
    for line in text:
        if ("this is a " + input) in line:
            print line
            looking_for_indents = True
            continue
    
        if looking_for_indents:
            if line.startswith('  '):
                print line
            else
                # that's all of them, stop looking
                looking_for_indents = False
    
    旁白:

    • input
      是Python中的内置函数;将你的论点命名为“输入”是不好的做法
    • lines.strip()去掉了开始/结束空格,如果您正在查找它们,它将毫无帮助
    • readlines()
      返回字符串列表,
      for
      逐字符串迭代<代码>对于文本中的行
    意味着
    是复数,但不是复数
    谢谢您提供的信息。根据你的建议,我现在得到了匹配的缩进。但是我该如何编写代码来搜索(“这是一个”+输入)?还有,我可以用什么来代替strip()来维护开始/结束空格呢?我得到了搜索字符串+输入的代码,只是一个愚蠢的错误。但是期待有人能告诉我用什么来代替strip()来维护起点/终点spaces@mmxool什么意思?用什么代替脱衣舞。。。实现什么?