我对python有点新,希望能帮助格式化文件。我目前正在处理如下文件:
3 5
3 6
3 7
3 8
3 12
3 13
3 14
5 1
5 2
5 3
其中第一列表示行号,第二列表示矩阵中的列号。我想重新格式化这个文件,看起来像:
3 5 8
3 12 14
5 1 3
我该怎么做?我想要运行它的文件比10行大得多,这只是我一直在用来测试我的代码的一个例子。
答案 0 :(得分:0)
这应该是python question
,但它看起来像algorithm problem
。下次给我们带来你的算法,我们可以帮你写python。
这个算法可能不是你问题的最佳解决方案,但它会告诉你python可以做什么:
long_text = '''3 5
3 6
3 7
3 8
3 12
3 13
3 14
5 1
5 2
5 3'''
lines = long_text.split('\n')
last_row = -1
last_column = -1
add_one = True
formatted_text = ''
for line in lines:
row, column = line.split(' ')
row = row
column = column
if row == last_row:
if int(column) == int(last_column) + 1:
if add_one:
formatted_text = '{} {}'.format(formatted_text, column)
add_one = False
else:
formatted_text = formatted_text[:-(len(last_column)+1)]
formatted_text = '{} {}'.format(formatted_text, column)
else:
formatted_text = '{}\n{} {}'.format(formatted_text, row,
column)
add_one = True
else:
formatted_text = '{}\n{} {}'.format(formatted_text, row, column)
add_one = True
last_row = row
last_column = column
print (formatted_text)
以下是SAME算法,改为使用list:
long_text = '''3 5
3 6
3 7
3 8
3 12
3 13
3 14
5 1
5 2
5 3'''
lines = long_text.split('\n')
last_row = -1
last_column = -1
add_one = True
formatted_list = []
for line in lines:
row, column = line.split(' ')
row = int(row)
column = int(column)
if row == last_row:
if column == last_column + 1:
if add_one:
formatted_list.append(column)
add_one = False
else:
formatted_list.pop(-1)
formatted_list.append(column)
else:
formatted_list.append('\n')
formatted_list.append(row)
formatted_list.append(column)
add_one = True
else:
formatted_list.append('\n')
formatted_list.append(row)
formatted_list.append(column)
add_one = True
last_row = row
last_column = column
formatted_text = ''
for element in formatted_list:
formatted_text = '{} {}'.format(formatted_text, element)
print (formatted_text)
add_one
用于检查是否必须删除最后一列,因此代码会输出3 5 8
而不是3 5 6 7 8
。