如何从字符串列表中随机选择一个不包含数字的标记?

时间:2018-12-27 14:40:39

标签: python python-3.x random

我知道在python中,为了从令牌中随机抽取一个单词,我们可以这样做:

在:

import random 
s = 'hi there 3'
words = s.split() 
random.choice(words)

出局:

3

但是,如何选择下一个单词(在这种情况下为hi)而不是数字?我想始终保证我输入的是字符串而不是数字?

3 个答案:

答案 0 :(得分:1)

使用以下列表理解来提取非数字词:

local all all peer 
host all all 165.227.123.167/32 md5
host all all ::1/128 md5

#That code successfully allows access to database once applied to file and this command following:
sudo systemctl restart postgresql

所以您的代码看起来像

words = [i for i in s.split() if i.isalpha()]
['hi', 'there']

答案 1 :(得分:1)

尝试一下:

words = [ x for x in s.split() if not x.isdigit()] 

答案 2 :(得分:1)

另一种选择是将您的列表随机排列,然后选择第一个不是数字的列表。另外,您可以在next函数中使用生成器表达式,方法是使用str.isalpha()检查项目的类型。例如:

In [11]: import random 
    ...: s = 'hi there 3'
    ...: lst = s.split()
    ...: random.shuffle(lst)
    ...: 
    ...: 

In [12]: next(i for i in lst if i.isalpha())
Out[12]: 'there'