Как удалить отступы из кода?

Здравствуйте! Можете помочь мне устранить лишние отступы в приведённом коде? Я заметила, что функция trim() удаляет только пробелы в начале и в конце строки, но не затрагивает отступы внутри кода. В результате получается такая проблема [скриншот].
  • 9 октября 2024 г. 20:13
Ответы на вопрос 4
Здравствуйте! Чтобы избавиться от лишних отступов внутри кода, необходимо использовать другие подходы, так как функция `trim()` действительно удаляет только пробелы в начале и в конце строки. 

Если вам нужно удалить лишние пробелы и отступы внутри строк или унифицировать отступы, можете воспользоваться следующими методами:

1. **Заменить несколько пробелов на один**: Вы можете использовать регулярные выражения для замены нескольких пробелов или табуляций на один:

   ```python
   import re

   code = """# Ваш код с лишними отступами"""
   cleaned_code = re.sub(r'\s+', ' ', code)
   print(cleaned_code)
   ```

   Это заменит все последовательности пробелов (включая табуляции) на один пробел.

2. **Удаление пробелов перед/после строк**:
   Если вам нужно убрать пробелы только в начале и в конце каждой строки, вы можете использовать `strip()` вместе с `map()`:

   ```python
   lines = code.splitlines()
   cleaned_lines = [line.strip() for line in lines]
   cleaned_code = '\n'.join(cleaned_lines)
   print(cleaned_code)
   ```

3. **Унификация отступов**: Если у вас есть отступы в виде пробелов и табуляций, вы можете заменить все табуляции на пробелы:

   ```python
   cleaned_code = code.replace('\t', ' ')
   ```

4. **Использование редакторов кода**: Многие редакторы кода (например, Visual Studio Code, PyCharm) предоставляют функции для автоформатирования кода, что может значительно упростить процесс.

Если у вас есть конкретные примеры кода, с которыми вы работаете, поделитесь ими, и я смогу дать более узкоспециализированные советы!
Не вставлять их? 

$data[] = '
<url>
<loc>'.$site.'/look/'.$sitemap['tag'].'</loc>
<lastmod>'.date('Y-m-d').'T'.date('h:i:s+01:00').'</lastmod>
<priority>0.8</priority>
</url>
';


Если не нравится, что код стал выглядеть не шибко красиво:
$data[] = "\n<url>\n<loc>"
  .$site."/look/".$sitemap['tag']."</loc>\n"
  ."<lastmod>".date('Y-m-d').'T'.date('h:i:s+01:00')."</lastmod>\n"
  ."<priority>0.8</priority>\n"
  ."</url>\n";
$BaseSiteMap = preg_replace('/\s{2,}/m', '', $BaseSiteMap);

В песочнице
два варианта: 
1)_ просто всё прижать влево:
<?php
$chunk = '
  <url>
  <loc>'.$site.'/look/'.$sitemap['tag'].'</loc>
  <lastmod>'.date('Y-m-d').'T'.date('h:i:s+01:00').'</lastmod>
  <priority>0.8</priority>
  </url>
  ';
$data[] = preg_replace('/^\s+</m', '<', trim($chunk));


2) вытянуть всё в строку:
<?php
$data[] = preg_replace('/>\s+</ms', '><', trim($chunk));

Эти регулярки только для данного случая! ( потому что никаких значимых пробелов в сайтмапе быть не должно)

Несколько замечаний:
1) показывать код скриншотом неэтично (я про готовый сайтмап). Здесь его можно было запихнуть в тег code (кнопка в панельке) с типом XML
2) если не используете числовые индексы, то вместо mysql_fetch_array() берите mysql_fetch_assoc()
3) mysql_* функции - древность, используйте хотя бы mysqli ( как объект, конечно же)
Похожие вопросы