Python 将当前行追加到上一行

Python 将当前行追加到上一行,python,parsing,ldif,Python,Parsing,Ldif,我正在尝试分析.ldif文件,但未能获得所需的输出。非常感谢您的帮助 以下是我使用python所做的工作: lines = open("use.ldif", "r").read().split("\n") for i, line in enumerate(lines): if not line.find(":"): lines[i-1] = lines[-1].strip() + line lines.pop(i) open("user_modified.ldif

我正在尝试分析.ldif文件,但未能获得所需的输出。非常感谢您的帮助

以下是我使用python所做的工作:

lines = open("use.ldif", "r").read().split("\n")
for i, line in enumerate(lines):
   if not line.find(":"):
      lines[i-1] = lines[-1].strip() + line
      lines.pop(i)

open("user_modified.ldif", "w").write("\n".join(lines)+"\n")
use.ldif输入文件

来自我的代码的user_modified.ldif输出

我得到了相同的输出,没有任何修改。我觉得这是因为我在做拆分,但我不知道还能做什么

期望输出

正如您在我的输出文件user_modified.ldif中所看到的,第一个条目中的对象类和第二个条目中的街道到达下一行。 我怎样才能让它们在同一行中,就像在期望的输出中一样

提前感谢

好的,我的方法如下:

lines = open("use.ldif", "r").read().split("\n")
for i, line in enumerate(lines):
   if len(line) > 0 and not (":" in line):
       lines[i-1] = lines[i-1].strip() + line
       lines.pop(i)

open("user_modified.ldif", "w").write("\n".join(lines)+"\n")
import re

pattern = re.compile(r"(\w+):(.*)")

with open("use.ldif", "r") as f:
    new_lines = []

    for line in f:
        if line.endswith('\n'):
            line = line[:-1]

        if line == "":
            new_lines.append(line)
            continue

        l = pattern.search(line)
        if l:
            new_lines.append(line)
        else:
            new_lines[-1] += line

with open("user_modified.ldif", "wt") as f:
    f.write("\n".join(new_lines))

查看一下您的代码,我建议您记录一些关于文件迭代的信息。也许您仍然是Python的初学者,但在您的代码中,您将处理整个文件3次,分别是读取、拆分'\n',最后是for语句。当您打开一个文件时,您得到的称为描述符,正如您在我的代码中看到的,您可以使用它在文件上迭代,在每个步骤上获得一行。对于较大的文件,这将成为一个重要的性能技巧

我不明白你的目标是什么。你能把你的欲望输出放在那个输入上吗?我很难正确理解你的问题。你可以简单地发布use.ldif内容和你现在得到的用户_modified.ldif,最后是你真正想要的文本吗。通过这种方式,我们可以直接了解什么是输入,什么是必需的输出,以及您的代码做错了什么现在我提到了所需的输出你忘了添加你的代码所给出的输出,也修正了你问题的前两行。我相信我有一个类似的格式,你的意思是我有一个包含这个内容的文件,我已经编辑了你的问题。请检查,我留下了空间来添加您现在获得的输出。在那里添加文本并提交。这很有效,谢谢。如何用空行分隔两个文档,因为它们是空的continuous@Radha代码清晰明了,我只是编写并运行了这段代码,我没有做任何其他事情,比如我想在street和company之后留下一行空白。基本上是在一个ldap条目之后,但是在这里我得到了它的连续性,没有分离。如何用一个空行分隔每个条目,如所示output@Radha只需添加一种跳过输入文件空行的方法。我编辑了我的解决方案来解决这个问题。@Radha别忘了标记为一个解决方案,以帮助其他有同样问题的用户。
lines = open("use.ldif", "r").read().split("\n")
for i, line in enumerate(lines):
   if len(line) > 0 and not (":" in line):
       lines[i-1] = lines[i-1].strip() + line
       lines.pop(i)

open("user_modified.ldif", "w").write("\n".join(lines)+"\n")
import re

pattern = re.compile(r"(\w+):(.*)")

with open("use.ldif", "r") as f:
    new_lines = []

    for line in f:
        if line.endswith('\n'):
            line = line[:-1]

        if line == "":
            new_lines.append(line)
            continue

        l = pattern.search(line)
        if l:
            new_lines.append(line)
        else:
            new_lines[-1] += line

with open("user_modified.ldif", "wt") as f:
    f.write("\n".join(new_lines))