我有一个程序会询问用户一个句子,获取每个单词,并将其存储在一个名为单词的列表中。
text = raw_input("")
words = map(lambda x:x.lower(), re.sub("[^\w]", " ", text).split())
喜欢这个。
现在,我想看看哪个单词有“name”这个词。我写了:
for listelement in words:
if listelement == "name":
name = listelement[This is what I want to find]
我该如何找到它? 速度并不是真正的问题,尽管它越快越好。
编辑:我试图通过输入句子“我的名字是*”来获取用户的名字,用文字分隔,检测列表中“名字”这个词的位置,添加2到“name”的位置并将其保存为变量uname。
答案 0 :(得分:3)
使用In [1]: string = 'this is a test'
In [2]: words = string.split(' ')
In [3]: words.index('is')
Out[3]: 1
In [4]: words.index('test')
Out[4]: 3
In [5]: words.index('foo')
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-5-7345c027ead9> in <module>()
----> 1 words.index('foo')
ValueError: 'foo' is not in list
方法。它将返回序列中项的第一个出现位置:
{{1}}
答案 1 :(得分:2)
我认为,你可以通过
轻松完成这项工作[0, 3]
这将打印text = "My name is Alice and his name is Bob"
words = text.split(' ')
indices = [i+2 for i, word in enumerate(words) if word == 'name']
names = [words[i] for i in indices if i < len(words)]
修改强>
此解决方案适用于多种情况。
在OP重新提出他的问题后,我会建议像
.row {
position: relative;
}
.bottom-align-text {
position: absolute;
bottom: 0;
right: 0;
}
答案 2 :(得分:1)
您可以使用list.index(value)
try:
pos = listelement.index("name")
except:
print("name not in the list")
答案 3 :(得分:0)
要查找第一次出现'name'
的索引,请考虑此生成器,
next(i for i,w in enumerate(words) if w == 'name')
在大多数情况下,这证明比迭代整个列表理解更快。