我想创建一个导入文本文件中每个单独行的类,如果可能,将元素转换为int,然后将这些对象附加到列表中。
另外,如果文本文件中的行超过6个单词,我想这样做,以便前2个在列表中保存在一起。
例如,我导入了一个文本文件,如:
Hi my age is 15 16
If you want 13 to add
Please use 0 to add to it
制作包含3个单独对象的列表
[
['Hi', 'my', 'age' 'is', 15, 16],
['If', 'you', 'want', 13, 'to', 'add'],
['Please use', 0, 'to', 'add', 'to', 'it',]
]
对于蟒蛇来说是全新的,我希望得到一些帮助,提前谢谢!
答案 0 :(得分:2)
这可以使用小循环结构非常简单地完成。我们可以将文件作为循环的一部分打开并逐行读取。假设您有一个文本文件,其中包含您在上面输入的名为'foo.txt'的内容。
myList = []
for line in open('foo.txt'):
l.append(line.rstrip().split(' ')
这将在您正在寻找的列表结构中创建列表。但等等,我们还没完成! Python将以这种方式读取的值解析为 String 类型。因此,如果读入数字,它们实际上将作为字符串放入列表中,而不是您想要的。要确定它是否为数字,可以在字符串上使用 isdigit()方法。
myList = []
for line in open('foo.txt'):
temp = line.rstrip().split()
toAdd = []
for value in temp:
if value.isdigit():
toAdd.append( int(value) )
else:
toAdd.append(value)
myList.append(toAdd)
这绝不是解决这个问题的最佳方法,只是想到的第一个解决方案。可能的情况是整个循环可能会作为某种LC表达式执行,如果有人愿意考虑它。
不满足您的最后要求,但我认为这样做并不困难。我鼓励你尝试改进我提供的东西。我强烈建议您查看Python文档中的String和List类中可用的方法(分别为http://docs.python.org/2/library/string.html和http://docs.python.org/2/library/stdtypes.html#typesseq)
答案 1 :(得分:0)
raw_data = open('textfile.txt', 'r')
lines = [ele.split() for ele in raw_data]
_list = []
_temp = []
for line in lines:
for ele in line:
try:
_temp.append(int(ele.strip()))
except:
_temp.append(ele.strip())
_list.append(_temp if (len(_temp) <= 6) else ["{0} {1}".format(_temp[0], _temp[1])]+_temp[2:])
_temp = []
print _list
输出
[['Hi', 'my', 'age', 'is', 15, 16],
['If', 'you', 'want', 13, 'to', 'add'],
['Please use', 0, 'to', 'add', 'to', 'it']]