2014-12-11 2 views
-1

У меня есть текстовый файл с разделителями табуляции, настроенный аналогично одной строке ниже, где некоторые столбцы имеют несколько значений, разделенных на канал.Denormalize текстовый файл с разделителями-запятыми

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 будут подходящим значением.

+2

Есть проблема со скриптом вы написали, что мы можем вам помочь? – DSM

ответ

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() 
+0

Это только дает мне первую новую денормализованную строку, но не остальные новые денормализованные строки, любые идеи? – slorga

+0

Я отредактировал. Это ближе к тому, что вы искали? – Academiphile

+0

Отлично, спасибо. – slorga

Смежные вопросы