比如具体代码如下:
print result
32:aaaaaa
33:bbbbbb
34:ccccccc
35:ddddddd
如果我想知道这些数据里面是否包含字符窜‘aaaaaa’,如果是则返回前面的数值。否的话则返回一个‘Not Match’之类的,该怎么写这一段代码?目前type(result)的结果是unicode,是否需要转化为字典?
比如具体代码如下:
print result
32:aaaaaa
33:bbbbbb
34:ccccccc
35:ddddddd
如果我想知道这些数据里面是否包含字符窜‘aaaaaa’,如果是则返回前面的数值。否的话则返回一个‘Not Match’之类的,该怎么写这一段代码?目前type(result)的结果是unicode,是否需要转化为字典?
@liguangsheng 的想法是對的, 可惜代碼有一點點問題
def getNumber(str):
for line in result.split('\n'):
group = line.split(':')
if str in group:
return group[0]
return False # <------------------------ 問題出在這裡
這會導致第一行沒有找到 str 就失敗, 比如說可以試一下:
print(getNumber('bbbbbb'))
這應該找的到的, 但會回傳 False
我小改了一下:
def find(data, keyword):
pairs = (line.strip().split(':') for line in result.split('\n'))
for i, words in pairs:
if keyword in words.split():
return i
return None # <--------- return should be here
if __name__=='__main__':
result = """32:aaaaaa
33:bbbbbb
34:ccccccc
35:ddddddd"""
print(find(result, 'aaaaaa'))
print(find(result, 'ccccccc'))
print(find(result, 'abcdefg'))
結果:
32
34
None
我回答過的問題: Python-QA
4 回答970 阅读
1 回答714 阅读
1 回答694 阅读
1 回答522 阅读
643 阅读
586 阅读
568 阅读