2013-10-13 123 views
0

我已经从逗号分隔的文本文件中读取数据(原始格式为alpha_char,空间为1,2,3,4,5,6,7,空间为alpha_characters,为新行字符)并输出[['1,2,3,4,5,6,7'],['7,5,3,9,8,2,4'], etc](即一个字符串的列表),并希望将它们转换为[[1,2,3,4,5,6,7],[7,5,3,9,8,2,4], etc](即int列表)。因此,我会欣赏如何从文本文件中读取数据到int列表列表或如何将我拥有的字符串列表转换为int列表列表。我知道,我在这里很愚蠢。将字符串列表的列表转换为列表的列表int

+1

,如果它真的是一个逗号分隔的文件,你可以跳过手工的东西,'进口csv'和使用那? – KobeJohn

回答

0

使用列表理解:

>>> with open('file.txt') as f: 
...  rows = [line.strip().split(',') for line in f] 
... 
>>> rows 
[['1', '2', '3', '4', '5', '6', '7'], ['7', '5', '3', '9', '8', '2', '4']] 
>>> nums = [list(map(int, row)) for row in rows] 
>>> nums 
[[1, 2, 3, 4, 5, 6, 7], [7, 5, 3, 9, 8, 2, 4]] 

您还可以使用csv module

>>> import csv 
>>> 
>>> with open('file.txt') as f: 
...  reader = csv.reader(f) 
...  rows = [row for row in reader] 
... 
>>> rows 
[['1', '2', '3', '4', '5', '6', '7'], ['7', '5', '3', '9', '8', '2', '4']] 
+0

谢谢。我试图按照你的描述做很多事情,但是在错误的地方。我现在得到int base10的无效文字,所以我需要看看我已经做了什么。优秀的答案 – user1478335

0

要筛选号码和转换您的输出,你可以做到以下几点:

new_list = [ [ int(x) for x in convert_list.split(",") if x.isdigit() ] for sublist in oldlist for convert_list in sublist ] 

如果你想知道你是否有输入这是不是一个数字,你可以省略.isdigit()和使用尝试以下情况除外:

try: 
    [ [ int(x) for x in convert_list.split(",") ] for sublist in oldlist for convert_list in sublist ] 
except ValueError: 
    print("bad input") 
相关问题