0

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

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

我希望这是有道理的我不知道如何处理这个

4

6 回答 6

4
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"
于 2013-03-07T04:51:30.953 回答
3
temp = []
with open('temp.txt') as ofile:
    for x in ofile:
        temp.append(x.rstrip("\n"))
for x in range(0, len(temp) - 1):
    print temp[x].split("..")[1] +".."+ temp[x+1].split("..")[0]
    x += 1
于 2013-03-07T05:18:57.527 回答
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')
于 2013-03-07T04:52:47.120 回答
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'
于 2013-03-07T04:42:10.283 回答
2

也许这会有所帮助:

def makeColumns(listOfNumbers):
    n = int()
    while n < len(listOfNumbers):
        print(listOfNumbers[n], '..', listOfNumbers[(n+1)])
        n += 2

def trim(listOfNumbers):
    listOfNumbers.pop(0)
    listOfNumbers.pop((len(listOfNumbers) - 1))

listOfNumbers = [190, 255, 337, 2799, 2801, 3733, 3734, 5020, 5234, 5530, 5683, 6459, 8238, 9191, 9306, 9893]

makeColumns(listOfNumbers)
print()

trim(listOfNumbers)
makeColumns(listOfNumbers)
于 2013-03-07T04:56:16.147 回答
0

我认为这也可能有用。我正在从文件名列表中读取数据。

data = open("list","r")
temp = []
value = []
print data
for line in data:
    temp = line.split("..")
    value.append(temp[0])
    value.append(temp[1])

for i in range(1,(len(value)-1),2):
    print value[i].strip()+".."+value[i+1]

print value

读取数据后,我拆分并将其存储在临时列表中。之后,我将数据复制到包含所有数据的主列表值。然后我从第二个元素迭代到倒数第二个元素以获得感兴趣的输出。strip 函数用于从值中删除 '\n' 字符。

您可以稍后将这些值写入文件而不是打印出来。

于 2016-03-21T00:05:37.830 回答