Как добавить четный элемент списка в строку без запятых - PullRequest
0 голосов
/ 06 февраля 2019

У меня есть следующий файл:

Rawdata.txt

ID Name
1 XYZ A, B, C
2 XYS D, E, F
3 YWZ G, H, I
4 XWE J, K, L

и мне нужно переформатировать его следующим образом:

output_data.txt

ID Name X1 Y1 Z1
1 XYZ A, B, C XYZ A  B  C
2 XYS D, E, F XYS D  E  F
3 YWZ G, H, I YWZ G  H  I
4 XWE J, K, L XWE J  K  L

До сих пор я использовал следующий скрипт:

with open('Rawdata.txt','r') as input_file:
  lines = input_file.read().splitlines()
  lines.pop(0)
  newList = [element for item in lines for element in item.split('\t')]
  #print newList

  with open('output_data.txt', 'w') as output_file:
    output_file.write("ID\tName\tX1\tY1\tZ1\n")

    for i in range(len(newList)):
       s = "".join(newList[i:(i+1)])

       output_file.write(s)
       output_file.write("\n")

Сейчас мой файл выглядит так:

ID Name X1 Y1 Z1
1 XYZ A, B, C 
2 XYS D, E, F 
3 YWZ G, H, I 
4 XWE J, K, L 

Какдобавить оставшиеся столбцы в файл output_data?

Ответы [ 2 ]

0 голосов
/ 06 февраля 2019

Я думаю, вы почти правильно поняли ваш код.Но я только что сделал небольшое исправление в вашем коде, которое делает его таким, как вы хотите.

with open('Rawdata.txt','r') as input_file:
  lines = input_file.read().splitlines()
  lines.pop(0)
  newList = [element for item in lines for element in item.split('\t')]
  print(newList)
  import regex as re
  with open('output_data.txt', 'w') as output_file:
    output_file.write("ID\tName\tX1\tY1\tZ1\n")

    for i in range(len(newList)):
       s = "\t".join(newList[i:(i+1)])
       s1 = re.sub(r'\d+?',' ',s)
       s1 = re.sub(r'\,',' ',s1)
       s = s+ s1
       output_file.write(s)
       output_file.write("\n")

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

0 голосов
/ 06 февраля 2019

Как то так.Перебирать каждую строку файла;разбить строку слева, чтобы получить ту часть, которую вы хотите дублировать;замените запятые в новой части на вкладку (?);соединить оригинальную линию и новую часть;запишите это в выходной файл.

with open('Rawdata.txt','r') as f, open('output_data.txt', 'w') as out:
    out.write("ID\tName\tX1\tY1\tZ1\n")
    next(f)
    for line in f:
        line = line.strip()
        _, new = line.lsplit()
        new = new.replace(',', '\t')
        line = '\t'.join([line,new]) + '\n'
        out.write(line)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...