【问题标题】:Iteration with a variable in Python 2.7在 Python 2.7 中使用变量进行迭代
【发布时间】:2012-03-15 22:03:32
【问题描述】:

各位专家,我希望循环读取一个文本文件,然后使用以下代码输出 (8) 个文本文件:

for i in range(1,9):
    with open(inputgui, 'r') as input1:
        junkinfo = [next(input1) for dummy in range(22)]
        with open(output, 'w') as output1:
            for line in input1:
                columns = line.strip().split()
                output1.write('{:8}{:8}\n'.format(columns[1], columns[i+1]))

请注意,变量inputgui 是来自用户的文本变量,而输出是来自用户的文本变量。例如,gui 中的用户将选择 'C:/Data.txt' 并希望命名输出并迭代 8 次以生成 'C:/NewData1.txt''C:/NewData2.txt' 等。如何格式化变量 output 以迭代或最有效的方式?

【问题讨论】:

  • 谢谢,这是有道理的。我意识到我将字符串和整数组合在一起,这是错误的大时代。

标签: python file loops python-2.7


【解决方案1】:

假设用户提供了一个扩展名为 .txt 的文件名,您可以这样做:

for i in range(1,9):
    with open(inputgui, 'r') as input1:
        junkinfo = [next(input1) for dummy in range(22)]

        newOutput = output[:-4] + str(i) + output[-4:]

        with open(newOutput, 'w') as output1:
            for line in input1:
                columns = line.strip().split()
                output1.write('{:8}{:8}\n'.format(columns[1], columns[i+1]))

如果扩展名未知,您需要找到 . is 和 splice 基于其位置

【讨论】:

    【解决方案2】:

    其他答案没有提到它,但您可以使用list 函数使代码更高效和 Pythonic。

    # Change
    junkinfo = [next(input1) for dummy in range(22)]
    
    # To
    junkinfo = list(input1)[:22] 
    
    # or even better...
    junkinfo = list(input1)
    

    如果不需要修剪到22个元素,可以使用最后一个。

    【讨论】:

      【解决方案3】:

      以下是为任意文件扩展名创建输出文件名的方法:

      output_file = (str(i) + '.').join(output.rsplit('.', 1))
      

      例如:

      >>> output = r'C:\Some.File.Name.data'
      >>> for i in range(1, 4):
      ...     print (str(i) + '.').join(output.rsplit('.', 1))
      ...
      C:\Some.File.Name1.data
      C:\Some.File.Name2.data
      C:\Some.File.Name3.data
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-10-04
        • 2012-09-24
        • 1970-01-01
        • 2015-08-22
        • 1970-01-01
        • 2021-05-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多