如何在一行中读取从A列到B列的所有字符
在Python中,假设有一个文件里面有10000行,每一行的格式都是这样的:
1, 2, xvfrt ert5a fsfs4 df f fdfd56 , 234
或者类似的格式,能不能把整行读出来,然后把第7列到第17列之间的所有字符(包括空格)存到另一个字符串里,这样新字符串的内容就是
"xvfrt ert5a" 呢?
非常感谢!
7 个回答
5
another_list = []
for line in f:
another_list.append(line[6:17])
another_list = (line[6:17] for line in f)
或者可以用生成器的方式来实现(这种方法更节省内存):
7
lst = [line[6:17] for line in open(fname)]
当然可以!请把你想要翻译的内容发给我,我会帮你用简单易懂的语言解释清楚。
1
这段话技术上回答了直接的问题:
lst = [line[6:17] for line in open(fname)]
但这里有一个致命的缺陷。这种写法适合临时代码,但看起来这些数据像是用逗号分隔的值,而第三个字段甚至可能是用空格分隔的数据块。更好的做法是这样写,这样如果前两列多出一个数字,代码仍然能正常工作:
lst = [x[2].strip()[0:11] for x in [line.split(',') for line in open(fname)]]
如果那些用空格分隔的数据块可能变得更长,那就这样写:
lst = [x[2].strip().split()[0:2] for x in [line.split(',') for line in open(fname)]]
别忘了加几条注释,解释一下发生了什么。比如:
# on each line, get the 3rd comma-delimited field and break out the
# first two space-separated chunks of the licence key
当然,假设这些是许可证密钥。注释不需要太抽象。