#python #regex #data-analysis
#python #регулярное выражение #анализ данных
Вопрос:
'Respondent,Randomized respondent ID number (not in order of survey response time)',
'MainBranch,"Which of the following options best describes you today? Here, by ""developer"" we mean ""someone who writes code."""',
'Hobbyist,Do you code as a hobby?',
'Age,"What is your age (in years)? If you prefer not to answer, you may leave this question blank."',
'Age1stCode,"At what age did you write your first line of code or program? (e.g., webpage, Hello World, Scratch project)"',
Вот набор данных, который у меня есть, и я хочу разделить только вопросы.
Вот код, который я пробовал .
lst=[]
regex=re.compile(r'(.*?)?')
for quest in data:
if regex.match(quest):
lst.append(regex.match(quest))
print(lst)
Он находит вопросы, но выдает мне целые предложения.
match='MainBranch,"Which of the following options best d>
Есть ли какой-нибудь способ, которым я мог бы просто получить вопросы без кавычек или имени человека.
и результат, который я получаю, находится в этом формате, соответствует объекту
['<re.Match object; span=(0, 68), match='MainBranch,"Which of the following options best d>',
"<re.Match object; span=(0, 32), match='Hobbyist,Do you code as a hobby?'>"
Могу ли я просто получить их как строки, не соответствующие объектам, и сохранить в списке?
Заранее спасибо.
Комментарии:
1. Попробуйте
re.search(r'"(.*?)?').group(1)
2. Вы пробовали шаблон выше?
3. Я получаю сообщение об ошибке :
expected string or bytes-like object
4. Я не понимаю, как вы это получаете. Пожалуйста, добавьте код, который вы используете, в вопрос.
5. Хорошо, я понял. Но он выдает мне одну строку. Вывод:
'Which of the following options best describes you today'
чего мне не хватает, чтобы я мог сделать это для всех строк?
Ответ №1:
Вы можете использовать r'"([^?]*)?'
регулярное выражение для сопоставления "
, затем записывать любые нулевые или более символов, отличные от ?
группы 1, а затем сопоставлять a ?
, чтобы убедиться, что это вопрос, а затем использовать regex.search(quest)
для поиска совпадения в любом месте строки ( re.match
только поиск в начале):
import re
data = ['Respondent,Randomized respondent ID number (not in order of survey response time)',
'MainBranch,"Which of the following options best describes you today? Here, by ""developer"" we mean ""someone who writes code."""',
'Hobbyist,Do you code as a hobby?',
'Age,"What is your age (in years)? If you prefer not to answer, you may leave this question blank."',
'Age1stCode,"At what age did you write your first line of code or program? (e.g., webpage, Hello World, Scratch project)"']
lst=[]
regex=re.compile(r'"([^?]*)?')
for quest in data:
m = regex.search(quest)
if m:
lst.append(m.group(1))
print(lst)
Вывод:
['Which of the following options best describes you today', 'What is your age (in years)', 'At what age did you write your first line of code or program']
Смотрите демонстрацию Python онлайн.