我有下一个问题。代码非常适合捕捉标签,但是...我怎样才能把第二个“同时”放入车道完成?
如果我把这条道:
hash = '#hhhh #asdasd'
代码不会编译。我怎么能改变一下呢?预先感谢。 例外:
while hash[indexA + 1] not in {' ', '#'}:
IndexError: string index out of range
以下是代码:
hash = '#hhhh #asdasd '
indexA = 0
copy = ''
indexB = indexA
while indexA < len(hash):
indexB = indexA
copy = ''
if hash[indexA] == '#' and indexA + 1 < len(hash):
while hash[indexA + 1] not in {' ', '#'}:
indexA += 1
copy = hash[indexB:indexA + 1]
if len(copy) > 1:
print('newHashtag: ' + copy)
if hash[indexA + 1] == ' ':
indexA += 1
else:
indexA += 1
答案 0 :(得分:2)
如果你想在字符串中找到标签,你可以更容易地使用pythonic方式:
some_string = "#tag1 #tag2 something else #tag3"
tags = [tag.strip("#") for tag in some_string.split() if tag.startswith("#")]
>>> print tags
['tag1', 'tag2', 'tag3']
如果标签没有空格,您可以写下这样的内容:
some_string = "#tag1 #tag2 something else #tag3 #moretags#andmore"
tags = []
for tag in some_string.split():
if '#' in tag:
multi_tags = tag.split('#')
tags.extend([t for t in multi_tags if t])
>>> tags
['tag1', 'tag2', 'tag3', 'moretags', 'andmore']
答案 1 :(得分:1)
您遇到索引问题,因为您没有检查哈希的长度。这应该有效:
hash = '#hhhh #asdasd'
indexA = 0
copy = ''
indexB = indexA
while indexA < len(hash):
indexB = indexA
copy = ''
if hash[indexA] == '#' and indexA + 1 < len(hash):
while indexA + 1 < len(hash) and hash[indexA + 1] not in {' ', '#'}:
indexA += 1
copy = hash[indexB:indexA + 1]
if len(copy) > 1:
print('newHashtag: ' + copy)
if indexA + 1 < len(hash) and hash[indexA + 1] == ' ':
indexA += 1
else:
indexA += 1