Как убрать запятую в конце строки питон
Сформировали список тэгов, расставляя после каждого «,». После последнего тоже запятая… надо убрать.
Наверное многие это уже знают, но всё же:
$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
Для начала я бы порекомендовал пользоваться официальной документацией, она кстати даже локально поднимается.
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] стоит х