2013-12-03 5 views
0

Я пытаюсь написать программу, которая вычисляет таблицу, используя arcpy, а затем преобразует таблицу в определенный формат для чтения другой программы. Формат, который я получаю, указан внизу, перечислены и разделены запятой. Я хотел бы, чтобы формат имел только 2-е 2 поля, разделенные пробелом, например. 89.99 90.35 Мои данные о форматировании до сих пор не увенчались успехом, может ли кто-нибудь указать мне в правильном направлении? Большое спасибоФорматирование выходного файла python

import arcpy,csv 

table = "TABLE_OUTPUT2" 
outfile = "TXT-TABLE" 

fields = arcpy.ListFields(table) 
field_names = [field.name for field in fields] 

with open(outfile,'wb') as f: 
    w = csv.writer(f) 


for row in arcpy.SearchCursor(table): 
    field_vals = [row.getValue(field.name) for field in fields] 
    print field_vals 
    w.writerow(field_vals) 
del row 

[1, +89,99999999446867, 90,3567070001462]

[2, +88,99999999460778, 89,83622323918551]

[3, 87,99999999448423, +89,1722770229037]

+0

, что это результат в вашем файле? – njzk2

+0

w больше для значений, разделенных комой, а также он существует только в открытом блоке – njzk2

+0

. Ниже приведено мое окончательное решение. Спасибо за помощь. – user2883489

ответ

1
field_vals = [[1, 89.99999999446867, 90.3567070001462], 
       [2, 88.99999999460778, 89.83622323918551], 
       [3, 87.99999999448423, 89.1722770229037]] 
for field in field_vals: 
    _, b, c = field 
    print '{:.2f} {:.2f}'.format(b, c) 


90.00 90.36 
89.00 89.84 
88.00 89.17 

Замените имена переменных b и c с именами, которые лучше представляют их содержимое.

Если вы действительно хотите округлить результаты (так вы получите 89.99 для первого номера вместо 90.00), см. this answer.

0

В итоге я использовал следующий код, который делает то, что я просил. Однако у меня есть странная ошибка в том, что все текстовые отпечатки на экране в IDE, но отсутствующие значения 60ish в текстовом файле, т.е. текстовый файл усекается - это действительно очень странно ..

for row in arcpy.SearchCursor(table): 
    field_vals = [row.getValue(field.name) for field in fields] #index the fields 
    newlist2 = [field_vals[1], field_vals[2]] # reurn the required fields for azimuth and zenith 
    newlist = str(newlist2[0]) + " " + str(newlist2[1]) + "\n" # format for trimble sodtware 

    print newlist # Print and write the info 
    outfile.write(newlist) 
del row 
+1

Усечение было вызвано неправильным закрытием файла. исправлено с помощью outfile.close() – user2883489

Смежные вопросы