Denormalize制表符分隔的文本文件

时间:2014-12-11 17:23:06

标签: python

我有一个制表符分隔的文本文件设置类似于下面的一行,其中一些列有多个用管道分隔的值。

  

1234 PreferredName Property1a Property2a | Property2b | Property2c Synonym1 | Synonym2

我需要一个脚本来反规范化,如下所示:

  

1234 PreferredName Property1a Property2a同义词1

     

1234 PreferredName Property1a Property2b同义词2

     

1234 PreferredName Property1a Property2c同义词1

不能有空值,但填充值的顺序无关紧要。例如,在上面的第3行第5列中,同义词1或同义词2将是适当的值。

1 个答案:

答案 0 :(得分:0)

假设您已将文字转换为字符串s

s2=""     
L=s.split(" ")
for x in L:
   i=x.find("|")
   s2+=x[:i]+" "
print s2

那应该对一行进行非规范化。 对文件中的每一行执行此操作应为您提供所有所需的字符串,然后您可以将其写入新文件,或存储在字符串中。

对于文件:

result=""
f=open('file.txt','r')
lines=f.readlines()
f.close()
for s in lines:
   L=s.split(" ")
   for x in L:
      i=x.find("|")
      if i!=-1:
         result+=x[:i]+" "
      else:
         result+=x.strip("\n")+" "
   result=result[:-1]+"\n"

您应该最终得到一个包含非规范化文件的字符串。 如果您想将其写入新文件:

f=f.open('newfile.txt','w')
f.write(result)
f.close()