There a few ways to do it.
If you're importing pandas, then something like this would work:
df = session.sql("SELECT GET_DDL('table', 'CITIBIKE_TRIPS')")
pdf = df.to_pandas()
print(pdf.values[:1][0][0])
I get as output:
create or replace TABLE CITIBIKE_TRIPS (
RIDE_ID VARCHAR(16777216),
RIDEABLE_TYPE VARCHAR(16777216),
STARTED_AT TIMESTAMP_NTZ(9),
ENDED_AT TIMESTAMP_NTZ(9),
START_STATION_NAME VARCHAR(16777216),
START_STATION_ID NUMBER(38,0),
END_STATION_NAME VARCHAR(16777216),
END_STATION_ID NUMBER(38,0),
START_LAT FLOAT,
START_LNG FLOAT,
END_LAT FLOAT,
END_LNG FLOAT,
MEMBER_CASUAL VARCHAR(16777216)
);
Or using direct slicing on the Dataframe (not very beautiful though):
df = session.sql("SELECT GET_DDL('table', 'CITIBIKE_TRIPS')").collect()
ddl = str(df).split('=')[1].split(')]')[0]
print(ddl)
I get:
'create or replace TABLE CITIBIKE_TRIPS (\n\tRIDE_ID VARCHAR(16777216),\n\tRIDEABLE_TYPE VARCHAR(16777216),\n\tSTARTED_AT TIMESTAMP_NTZ(9),\n\tENDED_AT TIMESTAMP_NTZ(9),\n\tSTART_STATION_NAME VARCHAR(16777216),\n\tSTART_STATION_ID NUMBER(38,0),\n\tEND_STATION_NAME VARCHAR(16777216),\n\tEND_STATION_ID NUMBER(38,0),\n\tSTART_LAT FLOAT,\n\tSTART_LNG FLOAT,\n\tEND_LAT FLOAT,\n\tEND_LNG FLOAT,\n\tMEMBER_CASUAL VARCHAR(16777216)\n);'