#python #string #multilinestring
#python #строка #multilinestring
Вопрос:
Я пытаюсь сохранить в текстовом формате многострочную строку без перевода строки и любых множественных пробелов:
with open('test.txt','w') as f:
f.write( r"""<rect
x="0"
y="0"
width="%s"
height="%s"
stroke="red"
stroke-width="1"
fill-opacity="0" />""" %(3,4) "n" )
Когда я открываю файл cat 'text.txt'
, файл состоит из нескольких строк. Как я могу записать код в одной строке без нескольких пробелов?
<rect x="0" y="0" width="3" height="4" stroke="red" stroke-width="1" fill-opacity="0" />
Без использования, например "".join()
, или других методов, которые повлияют на читаемость кода?
Использование .replace('n', '')
не приведет к удалению множества пробелов.
Комментарии:
1. Плохой отступ!
2. Также опубликуйте пример того, как вы хотели бы, чтобы файл выглядел!
3. попробуйте удалить конкатенацию » n» в конце?
4. @Vaibhavgusain нет, это для следующего элемента
Ответ №1:
Добавьте .replace('n', '')
в конце строки.
Отредактировано: И под «в конце строки» я подразумеваю многострочную строку, например:
f.write( r"""<rect
x="0"
y="0"
width="%s"
height="%s"
stroke="red"
stroke-width="1"
fill-opacity="0" />""".replace('n', '') %(3,4) "n" )
^^^^^^^^^^^^^^^^^^
HERE
Другая возможность заключается в использовании автоматической конкатенации строк Python следующим образом:
f.write('<rect '
'x="0" '
'y="0" '
'width="%s" '
'height="%s" '
'stroke="red" '
'stroke-width="1" '
'fill-opacity="0"/> ' % (3,4) 'n')
Комментарии:
1. Извините, у меня произошла ошибка, потому что я поместил оператор не в то место, теперь кажется, что это работает, но у меня есть все пробелы
2. В этом случае замените ‘n’ на ‘n’ или не ставьте пробелы в многострочных строках!
3. @GM Я обновил свой ответ, чтобы предоставить альтернативный способ обработки пробелов и перевода строк. Если это решит вашу проблему, не могли бы вы отметить мой ответ?
4. @Guybrush Большое спасибо! Обычно я жду несколько дней, чтобы дать возможность другим пользователям ответить!
5. @gm если проблема решена, зачем тратить время других пользователей? 😉
Ответ №2:
Я предполагаю, что вы хотите, чтобы весь код в 1 строке для многострочной строки?
тогда просто сделайте это следующим образом
f.write(r"""<rect x="0" y="0" width="%s"
и т.д…
Таким образом, вы помещаете все в одну строку
Надеюсь, это поможет
Комментарии:
1. Спасибо, я это знаю, но если я напишу все в одной строке, я превыслю максимальную длину строки в 79 символов, указанную в PEP. Итак, это не ответ на мой вопрос
2. Вы уверены, что ваш код превышает максимальное количество символов в строке 79? потому что у меня это работало совершенно нормально, без каких-либо проблем.
3. Извините, я действительно запутался в том, что вы говорите о том, что PEP не выдает никаких ошибок? что касается меня, я вообще не получил ошибок
4. PEP — это руководство, которому следует следовать python.org/dev/peps/pep-0008/#id19 итак, я уверен, что ваше решение будет работать, но оно также не соответствует руководству ответ на мой вопрос