如何在一行中读取从A列到B列的所有字符

1 投票
7 回答
1843 浏览
提问于 2025-04-15 15:52

在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

当然,假设这些是许可证密钥。注释不需要太抽象。

撰写回答