Python脚本:删除选项卡,用逗号分隔列,列出max/min
我试图用Python编写一个脚本,以删除两列(一列带有x坐标,另一列带有y坐标)之间的制表符/空格,再加上用逗号分隔的列,并在末尾列出每列的最大值和最小值(x和y坐标各有2个值),如下所示:Python脚本:删除选项卡,用逗号分隔列,列出max/min,python,python-2.7,Python,Python 2.7,我试图用Python编写一个脚本,以删除两列(一列带有x坐标,另一列带有y坐标)之间的制表符/空格,再加上用逗号分隔的列,并在末尾列出每列的最大值和最小值(x和y坐标各有2个值),如下所示: 10000000 6000000 20000000 6100000 30000000 6200000 40000000 6300000 50000000 6400000 看起来像: 10000000,6000000 20000000,6100000 30000000,6200
10000000 6000000
20000000 6100000
30000000 6200000
40000000 6300000
50000000 6400000
看起来像:
10000000,6000000
20000000,6100000
30000000,6200000
40000000,6300000
50000000,6400000
10000000 50000000 60000000 640000000
我是新手,非常感谢你的帮助。非常感谢 这将起作用:
li = []
for line in lines:
li.append(', '.join(line.split('\t')))
first_column = [int(x.split(',')[0]) for x in li]
second_column = [int(x.split(' ')[1]) for x in li]
for x in li:
print (x)
print(min(first_column), max(first_column), min(second_column), max(second_column))
这将有助于:
li = []
for line in lines:
li.append(', '.join(line.split('\t')))
first_column = [int(x.split(',')[0]) for x in li]
second_column = [int(x.split(' ')[1]) for x in li]
for x in li:
print (x)
print(min(first_column), max(first_column), min(second_column), max(second_column))
您可以使用
csv
模块进行输出;只需在输入文件上循环并使用str.split()
将行拆分为行:
import csv
minimum = [float('inf'), float('inf')]
maximum = [float('-inf'), float('-inf')]
with open(inputfilename, 'r') as infile:
with open(outputfilename, 'wb') as outfile:
writer = csv.writer(outfile)
for line in infile:
row = map(int, line.split())
minimum = map(min, zip(minimum, row))
maximum = map(max, zip(maximum, row))
writer.writerow(row)
x_extremes, y_extremes = zip(minimum, maximum)
print ' '.join(map(str, x_extremes)), ' '.join(map(str, y_extremes))
float('inf')
和float('-inf')
starter值使以后计算最小和最大坐标变得更容易
最后一行是您可以使用
csv
模块进行输出;只需在输入文件上循环并使用str.split()
将行拆分为行:
import csv
minimum = [float('inf'), float('inf')]
maximum = [float('-inf'), float('-inf')]
with open(inputfilename, 'r') as infile:
with open(outputfilename, 'wb') as outfile:
writer = csv.writer(outfile)
for line in infile:
row = map(int, line.split())
minimum = map(min, zip(minimum, row))
maximum = map(max, zip(maximum, row))
writer.writerow(row)
x_extremes, y_extremes = zip(minimum, maximum)
print ' '.join(map(str, x_extremes)), ' '.join(map(str, y_extremes))
float('inf')
和float('-inf')
starter值使以后计算最小和最大坐标变得更容易
最后一句话是谢谢Ankur这么快。我会查出来让你知道的。谢谢安克尔这么快就来了。我会检查一下并让你知道。你想把最小和最大坐标写入这样的输出文件吗?还是你只是想把它们打印出来?或者您只是想读取输入列,并在程序中将这些值作为整数使用?您想将最小和最大坐标写入这样的输出文件吗?还是你只是想把它们打印出来?或者您只是想读取输入列,并在程序中使用这些值作为整数吗?嗨,Martijn。谢谢我想我就快到了(我只是将int改为float,因为我忘了在我的示例中提到,我实际上使用的是两个十进制浮点);但是,我收到一个错误,说“\u csv.reader”对象没有属性“writewrow”?请仔细查看该异常,并将其与我发布的代码进行比较。:-)(您缺少一个
e
)。很抱歉输入错误,正在处理两个终端,没有复制粘贴。这里是:AttributeError:“\u csv.reader”对象没有属性“writerow”。在回答您之前的问题时,我所要做的就是将最小-最大坐标与重新格式化的坐标(即没有空格,以逗号分隔的列)一起写入输出文件。@geodk:这是因为我太频繁地键入这些行,并将csv.writer
替换为csv.reader
。。。哎呀,更正了。它有效!!非常感谢。我对人性的信仰今天已经慢慢恢复了。嗨,玛蒂恩。谢谢我想我就快到了(我只是将int改为float,因为我忘了在我的示例中提到,我实际上使用的是两个十进制浮点);但是,我收到一个错误,说“\u csv.reader”对象没有属性“writewrow”?请仔细查看该异常,并将其与我发布的代码进行比较。:-)(您缺少一个e
)。很抱歉输入错误,正在处理两个终端,没有复制粘贴。这里是:AttributeError:“\u csv.reader”对象没有属性“writerow”。在回答您之前的问题时,我所要做的就是将最小-最大坐标与重新格式化的坐标(即没有空格,以逗号分隔的列)一起写入输出文件。@geodk:这是因为我太频繁地键入这些行,并将csv.writer
替换为csv.reader
。。。哎呀,更正了。它有效!!非常感谢。今天,我对人性的信仰已逐渐恢复。