Используйте регулярное выражение для сопоставления 3 символов в строке

#python #regex

#python #регулярное выражение

Вопрос:

У меня есть полезная нагрузка json, которую мне нужно сопоставить только SDC с vdcLocation .

 {
    "cmdbID":"d01aacda21b7c181aaaaa16dc4bcbca",
    "serialNumber":"VBlock740-4239340361f4d-0f6d9d6ad46879",
    "vdcLocation":"Data Center-San Diego (SDC)"
}
  

Вот код, который у меня есть до сих пор, чего мне не хватает?

 import json
with open('test-payload.json') as json_file:
    data = json.load(json_file)
    serialNumber = data["serialNumber"]
    dataCenter = data["vdcLocation"]
    splittedSerialNumber = serialNumber.split("-") # returns splitted list
    firstPart = splittedSerialNumber[0] # accessing the first part of the splitted list
    splittedDataCenter = dataCenter.split("-")
    lastPart = splittedDataCenter[1]
    vdcLocationOnly = if (re.match^('[SDC]')$):
        print(vdcLocationOnly)

print(serialNumber)
print(splittedSerialNumber)
print(firstPart)
print(splittedDataCenter)
print(lastPart)
  

Комментарии:

1. Если вы просто хотите сопоставить SDC входные данные, то вам действительно не нужно регулярное выражение. Просто используйте строковую функцию

2. ваш код здесь неверен: «vdcLocationOnly = if (re.match^(‘[SDC]’)$):» Недопустимый синтаксис со знаком ‘^’, знаком ‘$’ и re.match пропускает аргумент и по-прежнему недопустимый синтаксис с присвоением переменной с помощью оператора if…

Ответ №1:

Одним из решений может быть что-то вроде следующего:

 import json
import re
with open('test-payload.json') as json_file:
    data = json.load(json_file)
    serialNumber = data["serialNumber"]
    dataCenter = data["vdcLocation"]
    splittedSerialNumber = serialNumber.split("-") # returns splitted list
    firstPart = splittedSerialNumber[0] # accessing the first part of the splitted list
    splittedDataCenter = dataCenter.split("-")
    lastPart = splittedDataCenter[1]
    if "SDC" in dataCenter:
        print("found SDC using in")

    if re.search(r'(SDC)$', dataCenter):
        print("found SDC using re")

print(serialNumber)
print(splittedSerialNumber)
print(firstPart)
print(splittedDataCenter)
print(lastPart)
  

Самым простым подходом было бы использовать "SDC" in dataCenter . Но если ваши потребности немного сложнее, и вам действительно нужно использовать регулярное выражение, то вы, вероятно, захотите использовать re.search (см. Документы).

Комментарии:

1. tyvm, это сработало отлично. Я добавил оператор else к if для некоторой дополнительной логики, в которой я нуждался.