我有一个制表符分隔的文本文件设置类似于下面的一行,其中一些列有多个用管道分隔的值。
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将是适当的值。
答案 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()