Как убрать запятую в конце строки питон
Перейти к содержимому

Как убрать запятую в конце строки питон

  • автор:

Как убрать запятую в конце строки питон

Сформировали список тэгов, расставляя после каждого «,». После последнего тоже запятая… надо убрать.

Наверное многие это уже знают, но всё же:

$str = 'tag1, tag2, tag3,'; echo substr($str, 0, -1);

Кстати, это можно решить ещё во время формирования строки.

Комментарии RSS по email OK

Psih 17 июля 2008 г., 17:56:02

Можно ещё проще $str = ‘tag1, tag2, . tagN,’; $str = trim($str, ‘,’); Как решить во время форматирования я тоже отписал свой вариант в той записи.

Ktulhu 17 июля 2008 г., 17:56:08

Позволю с вами совсем не согласиться. Для этого есть chop() (который алиас rtrim()) Вызывается легко и непринужденно chop($str, ‘,’); А еще лучше chop($str, ‘ ,’); Объясню почему — в конце строки у вас может получиться так, что будет мусор, типа » , «. Тогда вам придется делать echo substr(trim($str), 0, -1); — что есть ненужная нагрузка, когда есть chop, которому мы в конце скармливаем список символов для рубки 🙂

Sam 17 июля 2008 г., 18:29:53

Ktulhu trim тоже принимает список символов, но chop конечно более подходящая штука для данного случая.

Евгений 17 июля 2008 г., 19:03:56

А зачем формировать список тегов именно так, не удобней ли: $tags = array(‘tag1’, ‘tag2’, ‘tag3’); echo implode(‘, ‘, $tags);

Sam 17 июля 2008 г., 19:09:02

Чаще всего удобней, но иногда не выходит. Например, если массив многомерный… это не обязательно тэги.

$links = array( 0 => array( 'name' => 'link1', 'link' => 'http://name1.com/'), 1 => array( 'name' => 'link2', 'link' => 'http://name2.com/'), );

Splurov 17 июля 2008 г., 21:30:47
Sam, тогда так может проще? 🙂

$result = array(); foreach ( $links as $v )  $result[] = '' . $v[ 'link' ] . '">' . $v[ 'name' ] . ' '; > $result = implode( ', ', $result );

Sam 17 июля 2008 г., 21:40:11

Splurov Так немного медленней, чем с формированием строки и chop(). Проявляется при обработке массива от 1000 элементов.

Splurov 17 июля 2008 г., 22:05:52
Sam, к счастью, нам не приходиться выводить пользователю списки из тысячи и более составляющих
Евгений 18 июля 2008 г., 2:03:08

Ну я то именно такой массив для тегов и представлял, но не хотел менять исходные данные. Потестил тут немного для массива вида:

$links = array( 0 => array( 'name' => 'link1', 'link' => 'http://name1.com/'), 1 => array( 'name' => 'link2', 'link' => 'http://name2.com/'), );~~~ три варианта: 1) [code=php]function html_link($v)  return '' . $v[ 'link' ] . '">' . $v[ 'name' ] . ' '; > $result = implode(', ', array_map('html_link', $links));

2) как предложил Splurov [code=php]$result = array(); foreach ( $links as $v ) < $result[] = '' . $v[ 'name' ] . ''; > $result = implode( ‘, ‘, $result );

3) без массивов с chop

[php] $result = »; foreach ( $links as $v ) < $result .= '' . $v[ 'name' ] . ', '; > $result = chop($result, ‘ ,’); ~~~ Для массива $links из 10 элементов (как наиболее типичный для тегов) и 100000 повторений получилось (в секундах все): 1) 7.84984397888 2) 2.80158305168 3) 2.40084600449, просто сборка без chop 1.68192100525

Евгений 18 июля 2008 г., 2:07:38
Не очень удачно запостился коммент, предварительный просмотр не повредил бы. 1)

function html_link($v)  return '' . $v[ 'link' ] . '">' . $v[ 'name' ] . ' '; > $result = implode(', ', array_map('html_link', $links));
$result = array(); foreach ( $links as $v )  $result[] = '' . $v[ 'link' ] . '">' . $v[ 'name' ] . ' '; > $result = implode( ', ', $result );

Удаление пунктуации из строки

Для удаления пунктуации из строки Python воспользуемся методом строки str.replace() . А именно, в цикле пройдемся по всем символам пунктуации, и если они есть, то просто заменим его на пустую строку.

Что бы не вспоминать и не собирать все символы пунктуации в список, воспользуемся модулем string , который любезно предоставляет атрибут с символами пунктуации string.punctuation .

# исходная строка >>> line = '- Мама мыла раму, а Маша помогала. (из прописи 1 класса)' >>> import string >>> string.punctuation # '!"#$%&\'()*+,-./:;?@[\\]^_`<|>~' # пунктуацию будем удалять в цикле for p in string.punctuation: if p in line: # банальная замена символа в строке line = line.replace(p, '') >>> line.strip() # 'Мама мыла раму а Маша помогала из прописи 1 класса' 

Кстати таким же способом можно удалять например «стоп слова» из текста, который подготавливается к поиску.

  • ОБЗОРНАЯ СТРАНИЦА РАЗДЕЛА
  • Преобразование строки в число
  • Строку в список, кортеж или множество символов
  • Одинарные, двойные и тройные кавычки в строке Python
  • Вывод специальных символов в строке Python «как есть»
  • Объединение и повторение строк
  • Индексирование строк
  • Использование срезов строк
  • Cрез строки Python от заданного символа/знака до конца строки
  • Создание макета для печати базовыми методами строк
  • Способы форматирования текстовых строк
  • Подсчет повторений слов в тексте, деление строки на список слов
  • Удаление слова из строки Python по фрагменту или шаблону
  • Удаление пунктуации из строки
  • Деление строки по заглавным буквам
  • Создание отчетов и писем по шаблонам

Как удалить запятую в конце строки?

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

Если не сложно можно пример кодом?
Заранее спасибо.

Нужен аналог пхп функции substr

  • Вопрос задан более трёх лет назад
  • 1035 просмотров

Комментировать
Решения вопроса 3

ivsol

Для начала я бы порекомендовал пользоваться официальной документацией, она кстати даже локально поднимается.
Packages/strings/func TrimRight, ссылка до TrimRight, пакета strings — TrimRight

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

Предполагается что «(‘ ‘ , ‘ ‘), (‘ ‘ , ‘ ‘),» — действительно строка.

package main import ( "fmt" "strings" ) func main()

Как убрать послению запятую в списке?

Мне нужно между всеми словами из списка поставить запятую, при этом, чтобы последняя запятая не отображалась.

x = ["Мазерати", "Бугати верон", "Ламборгине", "жыгули"] print("Список", end=':') for item in x: print(item, end=",") 

В конце выходит: Список:Мазерати,Бугат верон,Ламборгине,жыгули, Проблема в последней запятой.
Отслеживать
76 7 7 бронзовых знаков
задан 23 окт 2021 в 16:51
print(«,».join(x))
23 окт 2021 в 16:53
print(*x, sep=», «)
23 окт 2021 в 16:58

2 ответа 2

Сортировка: Сброс на вариант по умолчанию

x = ["Мазерати", "Бугати верон", "Ламборгине", "жыгули"] print("Список", end=':') for item in x: print(item, end=",") ''' Список:Мазерати,Бугати верон,Ламборгине,жыгули,Для продолжения нажмите любую кла вишу . . . ''' print('\b','\b') ''' Список:Мазерати,Бугати верон,Ламборгине,жыгули Для продолжения нажмите любую клавишу . . . ''' 

но предпочтительнее ответы в комментариях.

Отслеживать
ответ дан 23 окт 2021 в 17:13
1,604 1 1 золотой знак 3 3 серебряных знака 13 13 бронзовых знаков

x = ["Мазерати", "Бугати верон", "Ламборгине", "жыгули"] print("Список", end=':') for item in x: if item!=x[len(x)-1]: print(item, end=',') else: print(item) 

Отслеживать
Большое спасибо за ответ,но не мог бы ты ответить по подробней то что находится в сточке if
23 окт 2021 в 18:17

В if-е находится проверка на то, не является ли item последним, если является последним, то выполняется else

23 окт 2021 в 18:19

тоесть если там бы стояла цифра или слово оно бы удалилось ?Суть в том что [len(x)-1] это означает что оно считает сколько там всего с запятой и получается 8 еще -1 и 7.Если я утверждаю правильно тогда на 7 раз item было бы ровно 7 и тогда бы удалялся не последний елемент а предпоследний.Также почему перед [len(x)-1] стоит х

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *