Spaces:
Running
Running
Update app.py
Browse files
app.py
CHANGED
|
@@ -195,10 +195,10 @@ def extract_table_from_response(gpt_response):
|
|
| 195 |
# Split the response into lines
|
| 196 |
lines = gpt_response.strip().split("\n")
|
| 197 |
|
| 198 |
-
# Find where the table starts and ends (based on the presence of pipes `|`)
|
| 199 |
-
table_lines = [line for line in lines if '|' in line]
|
| 200 |
|
| 201 |
-
# If no table is found, return an empty string
|
| 202 |
if not table_lines:
|
| 203 |
return None
|
| 204 |
|
|
@@ -215,15 +215,22 @@ def gpt_response_to_dataframe(gpt_response):
|
|
| 215 |
# Extract the table text from the GPT response
|
| 216 |
table_lines = extract_table_from_response(gpt_response)
|
| 217 |
|
| 218 |
-
# If no table found, return
|
| 219 |
-
if table_lines is None:
|
| 220 |
return pd.DataFrame()
|
| 221 |
|
| 222 |
-
# Find the separator
|
| 223 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 224 |
|
| 225 |
-
# Extract headers and rows
|
| 226 |
headers = [h.strip() for h in table_lines[sep_line_index - 1].split('|')[1:-1]]
|
|
|
|
|
|
|
| 227 |
rows = [
|
| 228 |
[cell.strip() for cell in row.split('|')[1:-1]]
|
| 229 |
for row in table_lines[sep_line_index + 1:]
|
|
|
|
| 195 |
# Split the response into lines
|
| 196 |
lines = gpt_response.strip().split("\n")
|
| 197 |
|
| 198 |
+
# Find where the table starts and ends (based on the presence of pipes `|` and at least 3 columns)
|
| 199 |
+
table_lines = [line for line in lines if '|' in line and len(line.split('|')) > 3]
|
| 200 |
|
| 201 |
+
# If no table is found, return None or an empty string
|
| 202 |
if not table_lines:
|
| 203 |
return None
|
| 204 |
|
|
|
|
| 215 |
# Extract the table text from the GPT response
|
| 216 |
table_lines = extract_table_from_response(gpt_response)
|
| 217 |
|
| 218 |
+
# If no table found, return an empty DataFrame
|
| 219 |
+
if table_lines is None or len(table_lines) == 0:
|
| 220 |
return pd.DataFrame()
|
| 221 |
|
| 222 |
+
# Find the header and row separator (assume it's a line with dashes like |---|)
|
| 223 |
+
try:
|
| 224 |
+
# The separator line (contains dashes separating headers and rows)
|
| 225 |
+
sep_line_index = next(i for i, line in enumerate(table_lines) if set(line.strip()) == {'|', '-'})
|
| 226 |
+
except StopIteration:
|
| 227 |
+
# If no separator line is found, return an empty DataFrame
|
| 228 |
+
return pd.DataFrame()
|
| 229 |
|
| 230 |
+
# Extract headers (the line before the separator) and rows (lines after the separator)
|
| 231 |
headers = [h.strip() for h in table_lines[sep_line_index - 1].split('|')[1:-1]]
|
| 232 |
+
|
| 233 |
+
# Extract rows (each line after the separator)
|
| 234 |
rows = [
|
| 235 |
[cell.strip() for cell in row.split('|')[1:-1]]
|
| 236 |
for row in table_lines[sep_line_index + 1:]
|