我希望程序停止在十进制“。”;如何让Python抓取字母直到字符串中的某个字符?

时间:2017-03-20 18:41:13

标签: python

我试过这个但是它的工作

例如:

x= 523.897
y= x[0:"."]
print y

我只想打印523。如何让Python抓取字符串直到某个字母或数字?

3 个答案:

答案 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")