Python разделяет строки из прочитанного файла и записывает их в другом формате в другой файл

#python #csv #split

#python #csv #разделение

Вопрос:

Я прочитал строки из файла, который содержит два столбца со значениями в этом стиле:

       100.E-03             5.65581E-06
      110.E-03            11.222E-06  
      120.E-03            18.3487E-06 
      130.E-03            15.6892E-06 
  

Мне нужно записать их в другой файл как:

           100.E-03       ,      5.65581E-06
          110.E-03       ,     11.222E-06  
          120.E-03       ,     18.3487E-06 
          130.E-03       ,     15.6892E-06 
  

Могу ли я сделать это с помощью split? Могу ли я определить пробелы, например, 5 пробелов в качестве разделяемой переменной? И когда да, как я могу выбрать разделенные части, чтобы записать их так, как я хочу:
Мой скрипт выглядит так:

 for k in files:
    print 'k =',k
    from  abaqus import session
    print k 
    with open("niffacc{k}.inp".format(k=k)) as f1:
       with open("niffacc_{k}.inp".format(k=k),"w") as f2:
            for line in itertools.islice(f1, 4, None):
                b = line.split("            ")
                #print "b:", b
                c = b[1]
                d = b[3] 
                f2.write('%s'%c   ","   '%s'%d)    
    #with open('VY_{k}'.format(k=k), 'a') as f1:
    #lines = f1.readlines()
    f2.close()
    f1.close()
  

Я думаю, что проблема заключается в определении b, разделенной строки. Есть ли какие-либо проблемы с определением пробелов как разделенных символов? Есть ли у python проблема с разделением ti из-за большого количества пробелов или он обрабатывается как группы пробелов?
Является ли лучшим решением преобразовать файл в файл csv, а затем обратно в текстовый файл?

Ответ №1:

Я не уверен, зачем вам столько пробелов между столбцами, но вы можете просто разделить их на пробелы:

 with open('file1.txt') as f1, open('file2.txt', 'w') as f2:
    for line in f1:
        f2.write(line.split()[0]   ','   line.split()[1]   'n')
  

Если вам действительно нужна куча пробелов, просто используйте:

 f2.write(line.split()[0]   '    ,    '   line.split()[1]   'n')
  

Ответ №2:

split автоматически обрабатывает любое количество пробелов.

 '      100.E-03             5.65581E-06'.split() == ['100.E-03', '5.65581E-06']