#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 для некоторой дополнительной логики, в которой я нуждался.