首页 > 解决方案 > 将当前行追加到上一行

问题描述

我正在尝试解析.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(输入文件)

dn: cnh
changetype: add
objectclass: inetOrgPerson
objectclass: cdsUser
objectclass: organizationalPerson
objectclass: Person
objectclass: n
objectclass: Top
objectclass: cd
objectclass: D
objectclass: nshd shdghsf shgdhfjh jhghhghhgh
 hjgfhgfghfhg
street: shgdhgf

dn: cnh
changetype: add
objectclass: inetOrgPerson
objectclass: hjgfhgfghfhg
street: shgdhgf kjsgdhgsjhg shdghsgjfhsfsf
 jgsdhsh
company: xyz

user_modified.ldif(我的代码的输出)

我得到相同的输出,没有任何修改。我觉得这是因为我在做split("\n"),但我不知道还能做什么。

期望的输出

dn: cnh
changetype: add
objectclass: inetOrgPerson
objectclass: cdsUser
objectclass: organizationalPerson
objectclass: Person
objectclass: n
objectclass: Top
objectclass: cd
objectclass: D
objectclass: nshd shdghsf shgdhfjh jhghhghhghhjgfhgfghfhg
street: shgdhgf

dn: cnh
changetype: add
objectclass: inetOrgPerson
objectclass: hjgfhgfghfhg
street: shgdhgf kjsgdhgsjhg shdghsgjfhsfsfjgsdhsh
company: xyz

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

提前致谢

标签: pythonparsingldif

解决方案


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

推荐阅读