在python中的字符后获取字符串

时间:2018-11-19 18:32:19

标签: python list slice

获取一个字符串,该字符串位于mem_id符号之后,并且应在其他字符(没有数字和字符)之前结束。 例如:

'%'

它应该作为列表返回。

string = 'Hi %how are %YOU786$ex doing'

我尝试了

['how', 'you']

但是我不知道如何摆脱string = text.split() sample = [] for i in string: if '%' in i: sample.append(i[1:index].lower()) return sample 编辑:我不想导入re

3 个答案:

答案 0 :(得分:2)

您可以使用正则表达式。

>>> import re
>>> 
>>> s = 'Hi %how are %YOU786$ex doing'
>>> re.findall('%([a-z]+)', s.lower())
>>> ['how', 'you']

regex101 details

答案 1 :(得分:1)

使用import re re.findall(r'%([a-z]+)', string.lower()) 最容易做到:

['how', 'you']

这将返回:

str.split()

或者您可以使用sample = [] for token in string.lower().split('%')[1:]: word = '' for char in token: if char.isalpha(): word += char else: break sample.append(word) 并遍历字符:

sample

['how', 'you'] 将变为:

message.channel
  .bulkDelete(args[0] + 1)
  .then(messages => console.log(`Bulk deleted ${messages.size} messages`))
  .catch(console.error);

答案 2 :(得分:0)

使用Regex(正则表达式)。

首先,为您的任务创建一个Regex模式。您可以使用在线工具进行测试。请参见正则表达式以了解您的任务:https://regex101.com/r/PMSvtK/1

然后只需在Python中使用此正则表达式即可:

import re

def parse_string(string):
    return re.findall("\%([a-zA-Z]+)", string)

print(parse_string('Hi %how are %YOU786$ex doing'))

输出:

['how', 'YOU']