Мне нужно вставить разрывы строк (ввести знаки) между строкой перед началом каждого нового слова.
Строка:
test (n) trial, experiment, check run (v) race, rush speed (n) race, sprint, rush, dash, zoom
Ожидается:
test (n) trial, experiment, check
run (v) race, rush
speed (n) race, sprint, rush, dash, zoom
Это регулярное выражение выделяет слово перед парантезом. Но как мне вставить знак ввода в нужное место?
\ w + (? = \ S + ((. *?)))
Обновить :
Ответ не относится к фактической строке, которую мне нужно обработать. По-разному ли строки Юникода обрабатываются регулярным выражением?
import re
regex = r"(\w+)(?= (?:[()])).*?"
test_str = "खत (स्त्री) पाहा : भेट मुलगा (पु) पोर‚ पोरगा‚ पोरटा‚ कारटा‚ किशोर‚ कुमार‚ कुमारिका‚ तरुण; लग्नाचा/उपवधू मुलगा; पाहा : पुत्र ‚ पुरुष (n) boy, lad, kid, urchin; पाहा : पुत्र ‚ पुरुष मुलगी (स्त्री) पोर‚ पोरगी‚ पोरटी‚ बाला‚ बाळा‚ बालिका‚ छोकरी‚ छोटी‚ बेटी‚ कारटी‚ नग्निका‚"
subst = "\\n\\1"
result = re.sub(regex, subst, test_str , 0, re.MULTILINE)
if result:
print (result)
Первый разрыв строки правильный «\ n खत», а второй неправильный в «पुरु \ n ष». Третий и четвертый отсутствуют.
Ожидается:
खत (स्त्री) पाहा : भेट
मुलगा (पु) पोर‚ पोरगा‚ पोरटा‚ कारटा‚ किशोर‚ कुमार‚ कुमारिका‚ तरुण; लग्नाचा/उपवधू मुलगा; पाहा : पुत्र ‚
पुरुष (n) boy, lad, kid, urchin; पाहा : पुत्र ‚ पुरुष
मुलगी (स्त्री) पोर‚ पोरगी‚ पोरटी‚ बाला‚ बाळा‚ बालिका‚ छोकरी‚ छोटी‚ बेटी‚ कारटी‚ नग्निका‚