[英]Python: How to slice a string on a specific number of characters into a list?
[英]how to slice specific characters in python with constraints?
str="class computer :"
name=str[str.find("class"):str.find(":")]
print name
上面的代码必须将结果输出为我得到的" computer "
,即"class computer"
。 可能是什么错误?
一旦找到.find('class')
,就需要使该索引偏移字符串'class'
本身的长度。
>>> s = 'class computer :'
>>> s[s.find('class')+len('class'):s.find(':')]
' computer '
您可以丢下一条strip
以删除开头和结尾的空格
>>> s[s.find("class")+len('class'):s.find(":")].strip()
'computer'
如果您在class中有其他单词,则查找将失败,您可以使用带有单词边界的正则表达式来查找单词class
的完全匹配class
:
import re
print(re.findall(r"(?<=\bclass\b)\s+\w+\s+",s))
您可以看到一个示例,该示例将如何失败:
In [9]: s = "subclass class computer :"
In [10]: s[s.find('class')+len('class'):s.find(':')]
Out[10]: ' class computer '
In [11]: re.findall(r"(?<=\bclass\b)\s+\w+\s+",s)
Out[11]: [' computer ']
如果您的字符串中有多个class
,则可以在lookbehind断言中使用lookahead:
s = "subclass class tv class computer :"
print(re.findall(r"(?<=\bclass\b)\s+\w+\s+(?=:)",s))
[' computer ']
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.