Либо регулярное выражение (получение последнего появления\n в строке и удаление его), либо простой $name = substr($name, 0, -2)
выполнит трюк
Чтобы удалить первое появление элемента в списке, просто используйте list.remove
:
>>> a = ['a', 'b', 'c', 'd']
>>> a.remove('b')
>>> print a
['a', 'c', 'd']
Имейте в виду, что он не удаляет все вхождения вашего элемента. Используйте для этого понимание списка.
>>> a = [10, 20, 30, 40, 20, 30, 40, 20, 70, 20]
>>> a = [x for x in a if x != 20]
>>> print a
[10, 30, 40, 30, 40, 70]
это - мой ответ, просто используйте в то время как и для
def remove_all(data, value):
i = j = 0
while j < len(data):
if data[j] == value:
j += 1
continue
data[i] = data[j]
i += 1
j += 1
for x in range(j - i):
data.pop()
Вы можете сделать
a=[1,2,3,4]
if 6 in a:
a.remove(6)
, но выше нужно искать 6 в списке 2 раза, поэтому попробуйте, кроме как быстрее
try:
a.remove(6)
except:
pass
Найти значение в списке, а затем удалить этот индекс (если он существует) проще, просто используя метод удаления списка:
>>> a = [1, 2, 3, 4]
>>> try:
... a.remove(6)
... except ValueError:
... pass
...
>>> print a
[1, 2, 3, 4]
>>> try:
... a.remove(3)
... except ValueError:
... pass
...
>>> print a
[1, 2, 4]
Если вы делаете это часто, вы можете обернуть его в функцию:
def remove_if_exists(L, value):
try:
L.remove(value)
except ValueError:
pass
Вот как это сделать на месте (без понимания списка):
def remove_all(seq, value):
pos = 0
for item in seq:
if item != value:
seq[pos] = item
pos += 1
del seq[pos:]
Обычно Python выдает исключение, если вы говорите ему сделать что-то, чего он не может, поэтому вам придется сделать либо:
if c in a:
a.remove(c)
, либо:
try:
a.remove(c)
except ValueError:
pass
Исключение не обязательно плохо, если оно тот, которого вы ожидаете, и с которым справитесь должным образом.