0

したがって、1 つの列で構成されるテキスト ファイルがあり、各列は 2 つの数値で構成されます

190..255
337..2799
2801..3733
3734..5020
5234..5530
5683..6459
8238..9191
9306..9893

最初と最後の数字、この場合は 190 と 9893 を破棄し、基本的に残りの数字を 1 桁進めます。このような

私の望む出力

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

これを試して:

  • それらすべてを 1 つのリストに読み取り、各行を 2 つの数字に分割して、すべての数字の 1 つのリストを作成します。
  • リストから最初と最後のアイテムを削除する
  • 一度に 2 つの項目を、間に点を付けてリストを作成します。

次に例を示します。

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 に答える