首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >:带有基10:'‘的int()的无效文本

:带有基10:'‘的int()的无效文本
EN

Stack Overflow用户
提问于 2015-05-08 08:41:28
回答 2查看 3.7K关注 0票数 5

帮助,当我试图从字符串中提取一个整数时,我一直得到ValueError:无效的int()和基10:‘!

代码语言:javascript
复制
from string import capwords
import sys,os
import re

def parseint(List):
    newlist = [i for i in List if isinstance(i, int)]
    return newlist
def getint(string):
    number = [int(x) for x in string.split("-")]
    return number

file=open('./Class 1/usr_score.data','r')
text=file.read()

def get_num(x):
    return int(''.join(ele for ele in x if ele.isdigit()))

split = text.split(",")

split.sort(key = lambda k : k.lower())
for i in split:
    print(i)

print ('---------------------------------------')
list1=[]
for i in split:
    list1.append(str(i))

num_list1=[]

for i in list1:
    ints = re.findall(r'\b\d+\b', i)

    #ints = getint(i)[0]
    for i in ints:
        int1=i
    num_list1.append(i)

    #num_list1 = parseint(list1)

num_list=num_list1


for i in num_list:
    print(i)

文件usr_score.data包含:

代码语言:javascript
复制
user-1,aaa-1,usr-3,aaa-4,

我的代码是,它包含了一个游戏的分数,我希望我的程序按字母顺序排序。谁能帮我解决一下问题吗?

注意:程序中的一些代码没有被使用。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-05-08 10:18:01

您的输入数据在末尾有一个“,”,这将导致除分数之外还生成一个空字符串:

代码语言:javascript
复制
['user-1', 'aaa-1', 'usr-3', 'aaa-4', '']

int('')不工作;您应该删除该空字符串,或者处理它。

票数 1
EN

Stack Overflow用户

发布于 2015-05-08 08:53:16

int()不能接受空字符串,这是一个无效的参数。您需要测试字符串作为int时是否为空。你可以在这样的列表理解中做到这一点:

代码语言:javascript
复制
[int(x) if not (x.isspace() or x == '') else 0 for x in string.split("-")]

如果您愿意的话,可以用None或其他结果替换0,但是这基本上总是检查字符串不仅仅是使用string.isspace()函数的空格字符,还可以确保x不是空字符串。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30119434

复制
相关文章

相似问题

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