Я довольно новичок в python и пытаюсь извлечь строку между 2 строками, используя код с zapier, используя python.
пример: dfsgsdfgsdfgsdfgsdfgsdfg Сервис: что я пытаюсь извлечь Подробная информация о клиенте: gfdgsdfgsdfgsdfgsdfg
Входная строка называется «описание»
и я пытаюсь извлечь то, что находится между строкой 'Service:' и 'Customer Details:'
Я использовал следующий код
import re
match = re.search(r'Service:(.*?)Customer Details:',input_data['description'])
return {'description': match}
, что успешно при тестировании, но возвращает описание:
null '
Я тоже пробовал с этим кодом:
myString=input_data['description']
mySubstring=myString[myString.find("Service:")+8:myString.find("Customer Details:")-17]
return {mySubstring}
Я получаю ошибку
'SyntaxError: неверный синтаксис (usercode.py, строка 8)'
Если бы кто-то мог мне помочь, это было бы очень признательно
Спасибо!
ОБНОВЛЕНИЕ 1:
Спасибо Abion47 за вашу помощь. Я поставил следующий код.
import re
input = input_data['description']
match = re.search(r'Service:(.*?)Customer Details:', input).group(1)
print match
Я получил ошибку ниже:
Traceback (most recent call last):
File "/tmp/tmpmvAChp/usercode.py", line 10, in the_function match = re.search(r'Service:(.*?)Customer Details:', input).group(1)
AttributeError: 'NoneType' object has no attribute 'group'
ОБНОВЛЕНИЕ 2
ошибка выше была вызвана тем, что код не нашел строку и, таким образом, возвратил что-то пустое.
вот мой вводимый текст, пришедший из календарного события Google:
Appointment Details
Provider: John Smith
Service: Adult Consultation
Customer Details:
Name: John Doe
Notes: Hi ghdfhdfg, dfghdfgg appointment I had for the 6th of January at 9.30 with this one. Is it possibile?
Status: Confirmed
с кодом ниже, я получил его на работу, но я получил ноль:
import re
name = input_data['description']
print name
try:
try:
name = re.search(r'(?s)(?<=Name:)(.*?)(?=Customer Details:)', input_data['description']).group(1).strip("\n\r ")
except AttributeError:
name = re.search(r'(?s)(?<=Name:)(.*?)(?=Customer Details:)', input_data['description']).group(1)
except AttributeError:
name = re.search(r'(?s)(?<=Name:)(.*?)(?=Customer Details:)', input_data['description'])
return { 'name': name }
но я получил следующий результат, он не нашел мою строку, хотя она там есть!
name: null
runtime_meta
duration_ms: 0
memory_used_mb: 23
logs
1. Appointment Details
2. Provider: John Smith
3. Service: Adult Consultation
4. Customer Details:
5. Name: John Doe
6. Notes: Hi ghdfhdfg, dfghdfgg appointment I had for the 6th of January at 9.30 with this one. Is it possibile?
7. Status: Confirmed
id: vbgOSvUOsBO8tAuLjk4wP0JMsMWsL0WV
Если кто-то знает, что не так в коде, он будет очень признателен!
КОД РАБОТЫ
Спасибо @ abion47 за помощь, полный рабочий код:
import re
name = input_data['description']
print name
myMatch = re.search(r'Service: (.*?)[\r\n]+Customer Details:', name).group(1)
print myMatch
return { 'myMatch': myMatch }