首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python字符串函数

Python字符串函数
EN

Stack Overflow用户
提问于 2014-04-22 17:06:23
回答 4查看 1.2K关注 0票数 0

如何确定字符串是否可以是Python中的整数。例如:如果我编写名为位()和非数字()的函数。字符串必须是数字(1-9)或字母。

代码语言:javascript
复制
str1 = '4582'
str1.digit() == True
str2 = '458dfr'
str2.digit() == False
str3 = 'abcd'
str3.nondigit() == True
str4 = '258edcx'
str4.nondigit() == False
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-04-22 17:08:11

str对象有一个isdigit方法来完成您的任务之一。从更广泛的角度来看,最好尝试一下,看看:

代码语言:javascript
复制
def digit(s):
    try:
        int(s)
        return True
    except ValueError:
        return False

例如," 1234 ".isdigit()False (有空格),但是python可以将它转换为int,所以我的digit函数是True

票数 5
EN

Stack Overflow用户

发布于 2014-04-22 17:07:51

这里面有个积木。

代码语言:javascript
复制
'4582'.isdigit() == True
'458dfr'.isdigit() == False

“引擎盖下”看起来可能很像:

代码语言:javascript
复制
def isdigit(self):
    return all(ch in "0123456789" for ch in self)

也就是说,如果您试图将它用作int,只需使用它作为int。

代码语言:javascript
复制
data = "123456"
try:
    data = int(data)
except ValueError:
    # handle this if your data is not a number

永远不要测试某件东西是否能够被转换,然后尝试转换它。这不仅适用于int强制转换,也适用于在打开文件之前检查文件是否存在。它创建了一个争用条件,如果在检查时可以将data转换为一个数字,但是在转换为int之前,另一个线程接管并更改它,则会得到一个错误。类似地,对于文件,如果您检查该文件是否存在,但在打开它之前某些东西会删除它,那么您就是SOL。

相反,做你想做的事情,并“请求宽恕”,如果它导致一个错误。我是请求宽恕比请求许可容易

票数 2
EN

Stack Overflow用户

发布于 2014-04-22 17:11:50

使用.isdigit()作为一个内置的方式来实现这一点。

代码语言:javascript
复制
>>> string = 'hello'
>>> num = '98'
>>> string.isdigit()
False
>>> num.isdigit()
True
>>> 

您还可以创建自己的函数:

代码语言:javascript
复制
>>> def digit(num):
...     try:
...             int(num)
...             return True
...     except ValueError:
...             return False
... 
>>> digit('45')
True
>>> digit('hello')
False
>>> 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23225950

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档