如何在Python中重新排列文本文件不同行的数字?
我有一个文本文件,里面只有一列,每一行都有两个数字。
190..255
337..2799
2801..3733
3734..5020
5234..5530
5683..6459
8238..9191
9306..9893
我想把第一和最后的数字去掉,也就是190和9893。然后把剩下的数字都往前移动一个位置,变成这样:
我想要的结果是:
255..337
2799..2801
3733..3734
5020..5234
5530..5683
6459..8238
9191..9306
希望这样说能让你明白,我不太确定该怎么做。
6 个回答
3
试试这个:
with open(filename, 'r') as f:
lines = f.readlines()
numbers = []
for row in lines:
numbers.extend(row.split('..'))
numbers = numbers[1:len(numbers)-1]
newLines = ['..'.join(numbers[idx:idx+2]) for idx in xrange(0, len(numbers), 2]
with open(filename, 'w') as f:
for line in newLines:
f.write(line)
f.write('\n')
3
试试这个方法:
- 把所有的内容读进一个列表里,把每一行分成两个数字,这样你就会得到一个包含所有数字的列表。
- 从你的列表中去掉第一个和最后一个项目。
- 把你的列表写出来,每次写两个项目,中间用点号隔开。
这里有个例子:
a = """190..255
337..2799
2801..3733
3734..5020
5234..5530
5683..6459
8238..9191
9306..9893"""
a_list = a.replace('..','\n').split()
b_list = a_list[1:-1]
b = ''
for i in range(len(a_list)/2):
b += '..'.join(b_list[2*i:2*i+2]) + '\n'
4
在编程中,有时候我们会遇到一些问题,特别是在使用某些工具或库的时候。这些问题可能会让我们感到困惑,尤其是当我们不太了解这些工具的工作原理时。
比如说,当你在写代码的时候,可能会发现某些功能没有按照预期工作。这时候,你可能需要去查找一些资料,看看别人是怎么解决类似的问题的。StackOverflow就是一个很好的地方,很多程序员会在这里分享他们的经验和解决方案。
在这个平台上,你可以看到很多人提问和回答问题。提问的人会描述他们遇到的具体情况,而回答的人则会根据自己的经验给出建议或者解决办法。这种互动帮助了很多人更好地理解编程中的各种问题。
总之,遇到问题时,不要害怕去寻求帮助,利用好像StackOverflow这样的资源,可以让你在编程的路上走得更顺利。
lines = """190..255
337..2799
2801..3733"""
values = [int(v) for line in lines.split() for v in line.split('..')]
# values = [190, 255, 337, 2799, 2801, 3733]
pairs = zip(values[1:-1:2], values[2:-1:2])
# pairs = [(255, 337), (2799, 2801)]
out = '\n'.join('%d..%d' % pair for pair in pairs)
# out = "255..337\n2799..2801"