【发布时间】: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
2
3
4
5
6
7
我想在特定列索引处拆分文件并将拆分后的输出并排粘贴。所以我的预期输出是
1 5
2 6
3 7
4
任何人都可以在 python 中提出解决方案吗?谢谢。
【问题讨论】:
标签: python pandas numpy for-loop
假设您的输入存储在名为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')
我确信有更简单的方法可以做到这一点,但这个似乎很好理解。
【讨论】:
读取文件并逐行读取,直到得到最后一行 现在找出行数 如果行数是偶数,那么我们可以在左右各分配 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])
【讨论】: