Я пытаюсь найти все, что в списке, который имеет формат, как «###### - ##»Найти все элементы в списке, которые соответствуют определенному формату
Я думал, что правильная идея в моем следующем коде, но он ничего не печатает. Некоторые значения в моем списке имеют такой формат, и я думаю, он должен его распечатать. Не могли бы вы рассказать мне, что случилось?
for line in list_nums:
if (line[-1:].isdigit()):
if (line[-2:-1].isdigit()):
if (line[-6:-5].isdigit()):
if ("-" in line[-3:-2]):
print(list_nums)
Значения в моем списке состоят из форматов, как 123456-56 и 123456-98-98, поэтому то, что я сделал выше. Он вытягивается из листа превосходства.
Это мой обновленный код.
import xlrd
from re import compile, match
file_location = "R:/emily/emilylistnum.xlsx"
workbook = xlrd.open_workbook(file_location)
sheet = workbook.sheet_by_index(0)
regexp = compile(r'^\d{d}-\d{2}$')
list_nums = ""
for row in range(sheet.nrows):
cell = sheet.cell_value(row,0)
if regexp.match(cell):
list_nums += cell + "\n"
print(list_nums)
мой первенствует лист состоит из: 581094-001 581095-001 581096-001 581097-01 5586987-007 SMX53-5567-53BP 552392-01-01 552392 -02 552392-03-01 552392-10-01 552392-10-01 543921-01 556664-55
(в каждой ячейке вниз в одном столбце)
вы можете просто подсчитать количество штрихов в строке, не так ли? Итак, 'if line.count ('-') == 2: print (line)' –
Я думаю, что лучшим решением является использование 're.findall()'. Допустим, вы 'my_string = '. .join (list_nums)'. Все, что вам нужно сделать, это 'found_elements = re.findall ('\ d + - \ d \ d', my_string)'. Обратите внимание, что '\ d + - \ d \ d' может быть неправильным. Проверьте https://docs.python.org/3.1/library/re.html для получения дополнительной информации. – Laszlowaty