Моя проблема заключается в:

У меня есть список, в котором после многократной очистки есть элементы, которые выглядят как «455XYZ455». Я пытаюсь удалить все после X, но оно находится внутри списка. Код, который позволяет мне это сделать, следующий:

check = [re.sub(r'\W', '', i) for i in content]
# print(check)
check2 = [re.sub('[aclassnewpagehref]', '', i) for i in check]
# print(check2)
check3 = [re.sub('[/<=""]', '', i) for i in check2]
# print(check3)
check4 = [item for item in check3 if item != '']
print(check4)

Как и ожидалось, это дает мне, как и выше, много «455XYZ455». Я просто хочу 455, но это список. Будучи полным новичком в Python, я полностью застрял. Спасибо, что прочитали и, возможно, помогли мне!

2
TimeWriter 23 Ноя 2020 в 16:13

2 ответа

Я хочу помочь вам, но не уверен, что получил ваш вопрос. Если элемент в вашем списке всегда содержит ТРИ символа перед x, вы можете сделать следующее:

x = 0
while x < len(check4):
   check4[x] = check4[x][0:3]
   x += 1

В противном случае все сложнее, но я могу вам помочь, просто дайте мне знать.

0
sailorcoding 23 Ноя 2020 в 13:23

Вы можете сделать это, просто используя split без регулярного выражения. Предположим, что строка '455XYZ455' находится в переменной a.

s = a.split('x')[0]

Здесь a будет разделен на 'x', и он вернет список частей до и после 'x', но поскольку вам нужна только часть до 'x', я назначил первый элемент списка s.

0
Dharman 23 Ноя 2020 в 13:52
64969131