如何在包含确定字符的列表中对字符串进行分类,python

2024-06-28 16:05:38 发布

您现在位置:Python中文网/ 问答频道 /正文

在以下列表中:

es_texts = ['dando lo mejor de mi!!', 'dando lo mejor de mi', 'La felicidad es irremplazable', 'Nos vamos de paseo', '¿Nos vamos de paseo?', 'Nos vamos de paseo?']

我想将字符串分成两个列表,其中一个列表包含确定的字符,如“?”、“!”等。只要它包含一个给定字符,它就应该转到^{,如果不是,则应该附加到^{,例如:

list_include = ['dando lo mejor de mi!!', '¿Nos vamos de paseo?', 'Nos vamos de paseo?']

list_exclude = ['dando lo mejor de mi', 'La felicidad es irremplazable', 'Nos vamos de paseo']

我试过:

list_include = []
list_exclude = []

for item in es_texts:
  if "?","!" in item:
    list_include.append(item)
  else:
    list_exclude.append(item)

print('list_include = ', list_include)
print('list_exclude = ', list_exclude)

但是我得到了一个无效的语法,我如何设法在“?”、“!”之间有一个“或”参数


Tags: lo列表includeesdeitemexcludelist
3条回答

我相信你需要str.endswith

Ex:

es_texts = ['dando lo mejor de mi!!', 'dando lo mejor de mi', 'La felicidad es irremplazable', 'Nos vamos de paseo', '¿Nos vamos de paseo?', 'Nos vamos de paseo?']

list_include = []
list_exclude = []
for item in es_texts:
    if item.endswith(("?", "!")):   # OR if any(i in item for i in ("?", "!")):
        list_include.append(item)
    else:
        list_exclude.append(item)

print(list_include)
print(list_exclude)

输出:

['dando lo mejor de mi!!', '¿Nos vamos de paseo?', 'Nos vamos de paseo?']
['dando lo mejor de mi', 'La felicidad es irremplazable', 'Nos vamos de paseo']

您可以使用列表理解:

es_texts = ['dando lo mejor de mi!!', 'dando lo mejor de mi', 'La felicidad es irremplazable', 'Nos vamos de paseo', '¿Nos vamos de paseo?', 'Nos vamos de paseo?']
list_include = [x for x in es_texts if "?" in x or "!" in x]
list_exclude = [x for x in es_texts if x not in list_include]
print(list_include)
print(list_exclude)

试试这个:

list_include = [s for s in es_texts if any([x in s for x in '?!'])]
list_exclude = [s for s in es_texts if s not in list_include]

相关问题 更多 >