首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在python中重新排列文本文件中不同行的数字?

如何在python中重新排列文本文件中不同行的数字?
EN

Stack Overflow用户
提问于 2013-03-07 12:35:46
回答 6查看 846关注 0票数 0

所以我有一个由一列组成的文本文件,每列包含两个数字

代码语言:javascript
运行
复制
190..255
337..2799
2801..3733
3734..5020
5234..5530
5683..6459
8238..9191
9306..9893

我想丢弃第一个也是最后一个数字,在本例中是190和9893。基本上把剩下的数字前移一位。像这样

我想要的输出

代码语言:javascript
运行
复制
255..337
2799..2801
3733..3734
5020..5234
5530..5683
6459..8238
9191..9306

我希望这能说得通我不知道该怎么做

EN

回答 6

Stack Overflow用户

发布于 2013-03-07 12:51:31

代码语言:javascript
运行
复制
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"
票数 4
EN

Stack Overflow用户

发布于 2013-03-07 12:42:10

试试这个:

  • 将它们全部读入一个列表,将每一行分成两个数字,这样你就有了一个包含所有numbers.
  • Remove的列表
  • 列表中的第一个和最后一个项目
  • 写出你的列表,一次两个项目,中间有点。

下面是一个例子:

代码语言:javascript
运行
复制
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'
票数 3
EN

Stack Overflow用户

发布于 2013-03-07 12:52:47

试试这个:

代码语言:javascript
运行
复制
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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15263158

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档