2016-04-27 6 views
0

У меня есть небольшой скрипт, который загрузить мне результаты из запроса и экспортировать его в CSV-питона - получить часть строки из результатов запроса

yy = raw_input("Enter year: ") 
mm = raw_input("Enter month: ") 

try: 

    conn = psycopg2.connect("dbname='xxx' user='xxx' host='xxx' password='xxx'") 
    cur=conn.cursor() 

query1 = """SELECT name FROM xxx where name like '%{0}_{1}%' """.format(yy,mm) 
     cur.execute(query1) 
     results = cur.fetchall() 
     for row in results: 
     print row 

csv_file = open('errors.csv','wb')# wb - query importing line by line 
myFile = csv.writer(csv_file) 
myFile.writerows(results) 
csv_file.close() 

Что мне нужно, это часть строки из результатов запроса. Банкоматы мои результаты выглядят следующим образом:

1-GRB-804_2016_02_03__08_42_12 
1-GRB-804_2016_02_05__11_04_47 
1-GRB-804_2016_02_06__08_20_15 
1-GRB-804_2016_02_08__08_06_13 
1-GRB-804_2016_02_08__08_30_58 

И что я хочу, чтобы получить первую строку недо она заседала знак «_». Так результаты будут:

1-GRB-804 
1-GRB-804 
1-GRB-804 
1-GRB-804 
1-GRB-804 

С уважением

ответ

1

Вы хотите, чтобы держать все до первой «_», то вы можете просто использовать string.split:

>>> s = '1-GRB-804_2016_02_03__08_42_12' 
>>> s.split('_') 
['1-GRB-804', '2016', '02', '03', '', '08', '42', '12'] 
>>> s = s.split('_')[0] 
>>>> s 
'1-GRB-804' 

Так что в вашем случае, вы бы необходимо:

for row in results: 
    print row.split('_')[0] 
+0

Что делать, если я использую оба запроса из postgres и сервера sql сервера Microsoft? Если я присоединяюсь к их результатам в одном? –

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