2012-10-25 39 views
0

我正在从MySQL数据库中读取数据并希望将其打印到屏幕上。python tuple中mysql的格式化数据

我用:

import MySQLdb 
conn = MySQLdb.connect(host='localhost',user='root',passwd='passwd',db='test',charset='utf8') 
cursor = conn.cursor() 
cursor.execute('select cust_name,cust_address,cust_city,cust_state from Customers') 
numrows = int(cursor.rowcount) 
for i in range(numrows): 
    row = cursor.fetchone() 
    print "%s %s %s %20s" %(row[0],row[1],row[2],row[3]) 
cursor.close() 
conn.close() 

的结果是这样的:

 
Village Toys 200 Maple Lane Detroit   MI 

Kids Place 333 South Lake Drive Columbus      OH 

Fun4All 1 Sunny Place Muncie      IN 

Fun4All 829 Riverside Drive Phoenix      AZ 

The Toy Store 4545 53rd Street Chicago      IL 

我怎样才能使它左对齐?

回答

1

假设你只需要对准的最后一列,像这样做:

print "%s %s %s %-20s" %(row[0],row[1],row[2],row[3]) 

- -sign它证明到左边。

+0

非常感谢,我想得到每一行的理由 – user1773219

+0

@ user1773219请把结果通缉的问题。在评论中,格式化会丢失。 – ovgolovin

+0

非常感谢。我很抱歉,我不能清楚地表达这个问题。我认为这个答案很棒('{row [0]:20} {row [1]:20} {row [2]:20} {row [3]:20}'。format(row = row)) – user1773219

0

另外,Python中有a new formatting syntax

据我所知,你希望每列都有相同的缩进。这可以通过指定每列应该占据的空间来实现。因为现在前3个字符串尽可能少地使用目标字符串,并且只有最后一个字符串需要20个符号。如果你指定每个字符串的长度,你将得到结果字符串中的输出很好地对齐。

尝试这种情况:

print('{row[0]:20}{row[1]:20}{row[2]:20}{row[3]:20}'.format(row=row)) 

的数字20在大括号表示各字段的长度。

+0

谢谢,我希望每一行都是justfiled。 – user1773219

+0

@ user1773219请显示您想要的输出示例。在问题中显示此示例(单击'edit')并添加此示例。 – ovgolovin

+0

非常感谢。你的回答非常好。 – user1773219