Как я могу получить первые и последующие слова из имен, разделенных подчеркиванием? - PullRequest
2 голосов
/ 06 апреля 2019

пытается получить слова среди подчеркиваний

Я пробовал эту реализацию, используя регулярные выражения 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 Ответ

1 голос
/ 07 апреля 2019

Это один из способов получить первые слова перед подчеркиванием:

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, затем четвертый_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)
...