我正在尝试编写一个脚本以根据以下内容增加几行的第二列
循环中的范围,即nums = range(17501, 17570)
。因此,每次增加时,第二列中的所有值都会increment to 17202 and then 17203
等等,其余的保持不变,有什么建议吗?
数据已经存在于文件中,所以我需要某种形式的read
然后是write
输出,这甚至可能吗?
x1E 17201 18 0 1 0 0 1
x2E 17201 19 0 1 0 0 1
x3E 17201 20 0 1 0 0 1
x4E 17201 21 0 1 0 0 1
x5E 17201 22 0 1 0 0 1
x6X 17201 23 0 1 0 0 1
x7X 17201 24 0 1 0 0 1
x8X 17201 25 0 1 0 0 1
x9X 17201 26 0 1 0 0 1
10X 17201 27 0 1 0 0 1
11X 17201 28 0 1 0 0 1
12X 17201 29 0 1 0 0 1
13X 17201 30 0 1 0 0 1
14X 17201 31 0 1 0 0 1
15X 17201 32 0 1 0 0 1
16X 17201 33 0 1 0 0 1
20X 17201 34 0 1 0 0 1
17X 17201 35 0 1 0 0 1
18X 17201 36 0 1 0 0 1
19X 17201 37 0 1 0 0 1
多亏了ROCKLY LI,我才开始努力。唯一的问题是它可能需要按数字第3列进行上述排序,如何对文件中的书面输出进行排序?
nums = range(17201,17920)
with open('Orig.txt', 'r') as fin:
with open('PLF.txt', 'w') as fout:
for line in fin.readlines():
line = line.split()
#if 17200 < int(line[1]) < 17920:
#print(line)
for i in range(0, len(nums),):
line[1] = int(line[1]) + 1
#line.append(str(line[1] + 1))
line = [str(e) for e in line] # Fix type
print(line)
#fout.write(' '.join(line) + '\n')
fout.write(' '.join(line) + '\n')
答案 0 :(得分:0)
我认为与其在原地编辑文件,不如生成一个新文件并保留旧文件,这是更合理的选择,pandas
import pandas as pd
df = pd.read_table('your_file.txt', header=None, delim_whitespace=True)
df[1] = df.apply(lambda x: x[1] + 1 if 17501 <= x[1] < 17570 else x[1])
df.to_csv('new_file.txt', sep=' ')
就是这样。
没有熊猫,您可以这样做:
with open('your_file.txt', 'r') as fin:
with open('new_file.txt', 'w') as fout:
for line in fin.readlines():
line = line.split()
if 17000 < int(line[1]) < 18000:
line[1] = int(line[1]) + 1
line = [str(e) for e in line] # Fix type
fout.write(' '.join(line) + '\n')