У меня есть текстовый файл, который представляет стенограмму. Мне нужно найти способ разделить это так, чтобы у меня был список строк, представляющих то, что сказал каждый человек. Так вот;

mystr = '''Bob: Hello there, how are you? 

           Alice: I am fine how are you?'''

Становится этим;

mylist= ['Bob: Hello there, how are you?','Alice: I am fine how are you?']

Я новичок в регулярных выражениях, но признаю, что это может быть путь. Проблема в том, что я хочу повторить это во многих расшифровках при обстоятельствах, когда имена будут различаться (например, Джон, Пол, Джордж, Ринго и т. Д.). То, что будет соответствовать, - это наличие слова (представляющего говорящего), за которым следует двоеточие, за которым следует пробел.

-1
DC_Liv 17 Сен 2018 в 18:14

2 ответа

Лучший ответ
re.findall(r"\S[^:]+.*", mystr)
#-> ['Bob: Hello there, how are you? ', 'Alice: I am fine how are you?']

https://docs.python.org/3/library/re.html

0
fl00r 17 Сен 2018 в 15:18
import re
mystr = '''Bob: Hello there, how are you? 

           Alice: I am fine how are you?'''
[_.group(0).strip() for _ in re.finditer(r"\w[^:]+.*", mystr)]

#['Bob: Hello there, how are you?', 'Alice: I am fine how are you?']

Если по какой-либо причине двоеточия нет, тогда это регулярное выражение должно быть предпочтительнее предыдущего.

mystr = '''Bob Hello there, how are you? 

           Alice: I am fine how are you?'''
[_.group(0).strip() for _ in re.finditer(r"\w{1,}:+.*", mystr)]
#['Alice: I am fine how are you?']
0
mad_ 17 Сен 2018 в 15:39