#python #regex #python-3.6 #special-characters
#python #регулярное выражение #python-3.6 #специальные символы
Вопрос:
пытаюсь получить слова среди подчеркиваний
Я пробовал это реализовать с использованием регулярных выражений python с наборами, кванторами и обратными ссылками в регулярных выражениях.
re.findall('(?:,?)(?: ?)(w )(?:_) ',text5)
text5 = 'aa_bb, aaa_ccc_ssdd, asd_qqsa, lkdd_trw_asdf_asdd'
Мне нужны первые слова, то есть;
['aa','aaa','asd','lkdd']
Однако результат, который я получаю, является
['aa', 'aaa_ccc', 'asd', 'lkdd_trw_asdf']
Пожалуйста, помогите также получить другие слова, например, для второго слова, вывод должен быть
['bb','ccc','qqsa','trw']
аналогично, для 3-го слова o / p будет
['ssdd','asdf']
4-е слово
['asdd']
Ответ №1:
Это один из способов получить первые слова перед подчеркиванием:
import re
text5 = 'aa_bb, aaa_ccc_ssdd, asd_qqsa, lkdd_trw_asdf_asdd'
split_text5 = text5.split()
first_Words = []
for string in split_text5:
re1 = re.search(r'[^_]*', string)
re2 = re1.group(0)
first_Words.append(re2)
print(first_Words)
Чтобы получить все слова:
import re
text5 = 'aa_bb, aaa_ccc_ssdd, asd_qqsa, lkdd_trw_asdf_asdd'
split_text5 = text5.split()
all_Words = []
for string in split_text5:
re3 = re.findall(r'[^_]*', string)
all_Words.extend(re3)
clean_list = []
for word in all_Words:
if word not in '':
clean_list.append(word)
all_Words = clean_list
print(all_Words)
Приведенный выше код сохранит запятые в строке. Если вы не хотите включать запятые, используйте:
re3 = re.findall(r'[^_,]*', string)
Чтобы получить first_Words, second_Words, third_Words, затем fourth_Words:
import re
text5 = 'aa_bb, aaa_ccc_ssdd, asd_qqsa, lkdd_trw_asdf_asdd'
split_text5 = text5.split()
all_Words = []
for string in split_text5:
re3 = re.findall(r'[^_,]*', string)
all_Words.append(re3)
#print(all_Words)
clean_list0 = []
clean_list1 = []
clean_list2 = []
clean_list3 = []
for word in all_Words[0]:
if word not in '':
clean_list0.append(word)
for word in all_Words[1]:
if word not in '':
clean_list1.append(word)
for word in all_Words[2]:
if word not in '':
clean_list2.append(word)
for word in all_Words[3]:
if word not in '':
clean_list3.append(word)
all_Words = [clean_list0, clean_list1, clean_list2, clean_list3]
first_Words = []
try:
first_Words.append(clean_list0[0])
except IndexError:
pass
try:
first_Words.append(clean_list1[0])
except IndexError:
pass
try:
first_Words.append(clean_list2[0])
except IndexError:
pass
try:
first_Words.append(clean_list3[0])
except IndexError:
pass
print(first_Words)
second_Words = []
try:
second_Words.append(clean_list0[1])
except IndexError:
pass
try:
second_Words.append(clean_list1[1])
except IndexError:
pass
try:
second_Words.append(clean_list2[1])
except IndexError:
pass
try:
second_Words.append(clean_list3[1])
except IndexError:
pass
print(second_Words)
third_Words = []
try:
third_Words.append(clean_list0[2])
except IndexError:
pass
try:
third_Words.append(clean_list1[2])
except IndexError:
pass
try:
third_Words.append(clean_list2[2])
except IndexError:
pass
try:
third_Words.append(clean_list3[2])
except IndexError:
pass
print(third_Words)
fourth_Words = []
try:
fourth_Words.append(clean_list0[3])
except IndexError:
pass
try:
fourth_Words.append(clean_list1[3])
except IndexError:
pass
try:
fourth_Words.append(clean_list2[3])
except IndexError:
pass
try:
fourth_Words.append(clean_list3[3])
except IndexError:
pass
print(fourth_Words)
Комментарии:
1. Спасибо, приятель! работал над извлечением первого слова и всех слов. Как насчет того, чтобы использовать только 2-е, 3-е и 4-е слова, если они существуют?
2. Пожалуйста, посмотрите дополнительный код в моем ответе, чтобы использовать только 2-е, 3-е и 4-е слова, если оно существует.