在Python中将字符串转换为整数的最佳方法

时间:2016-11-13 17:40:17

标签: python

我的电子表格中包含A067,A002,A104等文字值。最有效的方法是什么?现在我正在做以下事情:

str = 'A067'
str = str.replace('A','')
n = int(str)
print n

5 个答案:

答案 0 :(得分:1)

根据您的数据,以下内容可能适用:

import string

print int('A067'.strip(string.ascii_letters))

Python strip()命令获取要从字符串的开头和结尾删除的字符列表。通过传递string.ascii_letters,它会从字符串中删除任何前面和后面的字母。

答案 1 :(得分:0)

您可以使用正则表达式查找数字。

import re

s = 'A067'
s = re.findall(r'\d+', s) # This will find all numbers in the string
n = int(s[0]) # This will get the first number. Note: If no numbers will throw exception. A simple check can avoid this
print n

这里是一些带有不同字符串的findall的示例输出

>>> a = re.findall(r'\d+', 'A067')
>>> a
['067']
>>> a = re.findall(r'\d+', 'A067 B67')
>>> a
['067', '67']

答案 2 :(得分:0)

您可以使用re模块中的regex替换方法。

import re
regex = re.compile("(?P<numbers>.*?\d+")
matcher  = regex.search(line)
if matcher:
    numbers = int(matcher.groupdict()["numbers"] #this will give you the numbers from the captured group 

答案 3 :(得分:0)

import string

str = 'A067'
print (int(str.strip(string.ascii_letters)))

答案 4 :(得分:0)

如果输入的唯一非数字部分将是第一个字母,最快的方法可能是切割字符串:

s = 'A067'
n = int(s[1:])
print n

如果您认为每个字符串会找到多个数字,则上述正则表达式答案很可能更容易使用。