【问题标题】:splitting a text file in particular row and save the output在特定行中拆分文本文件并保存输出
【发布时间】:2020-11-22 14:27:49
【问题描述】:

各位专家,我有一个长文本文件,其中包含如下数据

1
2
3
4
5
6
7

我想在特定列索引处拆分文件并将拆分后的输出并排粘贴。所以我的预期输出是

1  5
2  6
3  7
4

任何人都可以在 python 中提出解决方案吗?谢谢。

【问题讨论】:

    标签: python pandas numpy for-loop


    【解决方案1】:

    假设您的输入存储在名为x 的列表中,并且您希望在索引idx 处拆分

    import numpy as np
    
    # Split into two lists
    x1, x2 = x[:idx], x[idx:]
    
    # Get their lengths and determine maximum length
    l1, l2 = len(x1), len(x2)
    max_l = max(l1, l2)
    
    # Lists have to be of equal length. Fill with empty strings
    x1 += [''] * (max_l - l1)
    x2 += [''] * (max_l - l2)
    
    # Combine lists again
    y = np.dstack([x1, x2])[0]
    

    对于您的示例,请尝试使用

    x = [1, 2, 3, 4, 5, 6, 7]
    idx = 4
    

    结果是

    [['0', '5'], ['1', '6'], ['2', '7'],  ['3', ''],  ['4', '']]
    

    您可以通过例如打印它

    print('\n'.join([' '.join(y_) for y_ in y]))
    

    但也可以对条目进行 for 循环。
    您可以通过以下方式保存输出:

    np.savetxt('out.dat', y, fmt='%s')
    

    我确信有更简单的方法可以做到这一点,但这个似乎很好理解。

    【讨论】:

    • 你能建议如何再次将其保存到文本文件
    • 它打印出很好的输出
    • 你能建议如何保存它
    • @glkshu 我加了,请查收:)
    • 如果我使用 print('\n'.join([' '.join(y_) for y_ in y])) 保存输出,你能否建议如何保存输出...... .我收到错误 ValueError: Expected 1D or 2D array, got 0D array instead
    【解决方案2】:

    读取文件并逐行读取,直到得到最后一行 现在找出行数 如果行数是偶数,那么我们可以在左右各分配 50% 否则打印时只有左半边-左半边1

    文件路径 = 'data.txt'

    数据=[]

    使用 open(filepath) 作为 fp:

    line = fp.readline()

    同时行:

        data.append(line.split("\n")[0])
    
        line = fp.readline()
    

    打印(数据)

    if(len(data)%2==0):

    half_len=int(len(data)/2)
    

    其他:

    half_len=int(len(data)/2)+1
    

    对于范围内的 i(half_len):

        if(i < half_len-1):
    
            print(data[i],data[i+half_len])
    

    if(len(data)%2==1):

    print(data[i])
    

    其他:

    print(data[i],data[i+half_len])
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-01-12
      • 1970-01-01
      • 2020-12-25
      • 1970-01-01
      • 1970-01-01
      • 2015-06-16
      • 2015-10-01
      • 1970-01-01
      相关资源
      最近更新 更多