1

Есть текстовый файл с разделением наподобие этого:

1|2|3|4|5|6

Как можно вставить дополнительный текст между определённым числом и |?

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

1|2|3/чтонибудь|4|5|6
m9_psy
  • 6,449
  • 2
    Можно сплитнуть строку, можно регексом реплейснуть. Демократия – MihailPw May 04 '17 at 06:01
  • 1
    Файл придётся перезаписывать полностью, текст - это не таблица БД. Так что: всё прочитать, откорректировать, всё записАть. – Akina May 04 '17 at 06:19
  • можно и с перезаписью, но по идеи можно просто сохранять результат в отдельный файлик скажем – Sergey Shcherbakov May 04 '17 at 06:20
  • Да, всё записать в другой файл - не запрещается. – Akina May 04 '17 at 06:29

1 Answers1

1
with open('in.txt', 'rt') as in_f:
   with open('out.txt', 'wt') as out_f:
      for line in in_f:
         # out.write(line.replace('|3|', '|3|что нибудь|')
         lst = line.split('|')
         out_f.write('|'.join(lst[:3] + ['что нибудь'] + lst[3:]))
andy.37
  • 7,461
  • дело в том, что 3 всегда разное (там разный текст) – Sergey Shcherbakov May 04 '17 at 07:00
  • т.е нужно определить позицию по разделителю и указать, что мы добавляем именно в конец /чтонибудь| до закрытия разделителя – Sergey Shcherbakov May 04 '17 at 07:01
  • @SergeyShcherbakov яснее формулируйте вопрос. Тогда так. – andy.37 May 04 '17 at 07:17
  • хм, по виду всё правильно, я не мог найти части: lst = line.split('|') и out.write('|'.join(lst[:3] + ['что нибудь'] + lst[3:])) – Sergey Shcherbakov May 04 '17 at 07:26
  • но сейчас пишет:

    File "run.py", line 1 with open(‘in.txt’, 'rt') as in: ^ SyntaxError: invalid character in identifier

    – Sergey Shcherbakov May 04 '17 at 07:26
  • @SergeyShcherbakov упс, сорри, in - ключевое слово – andy.37 May 04 '17 at 07:28
  • работает! ;) но оно дописывает к |3|чтонибудь| , а нужно что бы было |3чтонибудь| – Sergey Shcherbakov May 04 '17 at 07:36