我试过这个但是它的工作
例如:
x= 523.897
y= x[0:"."]
print y
我只想打印523。如何让Python抓取字符串直到某个字母或数字?
答案 0 :(得分:2)
行y = x[0:"."]
不是有效的Python。不过,我得到了你想要做的事情。试试这个:
x = 523.897
x = str(x)
y = x[:x.find('.')]
尽管从最后一行开始,您似乎只想要整数值523.897
。您可以使用int(523.897)
(或您的int(x)
)来执行此操作。
在幕后,您会看到x.find('.')
返回3,或'.'
首次出现的索引。因此,您确实将字符串'523.897'
从0到2(包括0和2)编入索引。相关链接:Explain Python's slice notation。
编辑:
@ Keerthana是的:如果'.'
不在字符串中,则上述方法将返回"不正确的"根据您上面列出的输出输出。这是因为在字符串中找不到字符时会返回-1
。有很多方法可以解决这个问题,例如使用str.split
,但我的情况适用于包含您正在寻找的角色的每个字符串。
答案 1 :(得分:1)
您可以使用string.split(s[, sep[, maxsplit]])
作为
如果给出maxsplit,则最多发生maxsplit分割数,并且字符串的其余部分作为列表的最后一个元素返回(因此,列表最多只有maxsplit + 1个元素)。如果未指定maxsplit或-1,则对分割数量没有限制(所有可能的分割都会生成)。
y = x.split(delim,1)[0]
即,
>>> x = 523.897
>>> x = str(x)
>>> delim='.'
>>> y = x.split(delim,1)[0]
>>> print y
'523'
>>> x='Hakona Matata'
>>> delim = 'n'
>>> y = x.split(delim,1)[0]
>>> print y
'Hako'
希望这有帮助!
答案 2 :(得分:0)
您也可以使用str.split()在点
处拆分字符串x = 523.897
d = r"."
x = str(x).split(".")[0]
正则表达式将是:
x = 523.897
d = r"."
x=re.search(r"(?P<x>.+)"+d+r"?", str(x)).group("x")