有没有办法使用以下方式在 Python 中操作字符串?
对于任何以点表示法存储的字符串,例如:
s = "classes.students.grades"
有没有办法将字符串更改为以下内容:
"classes.students"
基本上,删除直到最后一个期间的所有内容。所以"restaurants.spanish.food.salty"
将变为 "restaurants.spanish.food"
.
此外,有什么方法可以确定最后一个时期之后的内容吗?我想这样做的原因是我想使用 isDigit()
.
所以,如果是 classes.students.grades.0
我可以捕获 0
不知何故,所以我可以使用带有 isdigit
的 if 语句,并说如果最后一个句点之后的字符串部分(在这种情况下为 0
)是数字,则删除它,否则,保留它。
最佳答案
s = "classes.students.grades"
print '.'.join(s.split('.')[:-1])
您在 .
上拆分字符串 - 它会为您提供一个字符串列表,然后您将列表元素连接回用 .
分隔它们的字符串
[:-1]
将从列表中挑选除最后一个以外的所有元素
检查最后一个 之后的内容。
:
s.split('.')[-1]
另一种方法是使用 rsplit
.它的工作方式与 split 相同,但如果您提供 maxsplit 参数,它将从末尾开始拆分字符串:
rest, last = s.rsplit('.', 1)
'classes.students'
'grades'
您也可以使用re.sub
用空字符串替换最后一个 .
之后的部分:
re.sub('\.[^.]+$', '', s)
你问题的最后一部分是用 []
换行,我建议使用 format
和 list comprehension
:
''.join("[{}]".format(e) for e in s.split('.'))
它会给你想要的输出:
[classes][students][grades]
关于python - 点符号字符串操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35118265/