首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从几个文件中选择特定的行和列来创建一个新文件

从几个文件中选择特定的行和列来创建一个新文件
EN

Stack Overflow用户
提问于 2022-06-07 13:18:41
回答 1查看 29关注 0票数 0

我对python非常陌生,所以我甚至不知道如何启动它。

我有几个TFS文件,我需要读取它们,并从其他文件中创建一个具有特定行和列的新文件。

例如:

档案1:

代码语言:javascript
复制
x 1 # A
y 2 % B
z 3 * C

档案2:

代码语言:javascript
复制
x1 4 # A
y1 5 % B
z1 6 * C

档案3:

代码语言:javascript
复制
x2 7 # A
y2 8 % B
z2 9 * C

预期输出文件:

代码语言:javascript
复制
y 2 B
y1 5 B
y2 8 B 

(所有文件中的第1行和第0、1、3列)

EN

回答 1

Stack Overflow用户

发布于 2022-06-07 13:36:08

下面是如何使用内置enumerate()方法:

代码语言:javascript
复制
result = []
row = 1
cols = [0, 1, 3]

files = ["file1.tfs", "file2.tfs", "file3.tfs"]

for file in files:
    with open(file) as f:
        for i, line in enumerate(f):
            if i == row:
                result.append(" ".join(char for j, char in enumerate(line.split()) if j in cols))
                break

print("\n".join(result))

输出:

代码语言:javascript
复制
y 2 B
y1 5 B
y2 8 B

为了方便测试这段代码,我在这里用字符串列表替换了文件:

代码语言:javascript
复制
result = []
row = 1
cols = [0, 1, 3]

fs = [
    ["x 1 # A", "y 2 % B", "z 3 * C"],
    ["x1 4 # A", "y1 5 % B", "z1 6 * C"],
    ["x2 7 # A", "y2 8 % B", "z2 9 * C"]
]

for f in fs:
    for i, line in enumerate(f):
        if i == row:
            result.append(" ".join(char for j, char in enumerate(line.split()) if j in cols))
            break

print("\n".join(result))

输出:

代码语言:javascript
复制
y 2 B
y1 5 B
y2 8 B
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72531908

复制
相关文章

相似问题

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