У меня есть строка, которая должна выглядеть как
[[12.12345678,12.12345678],[12.12345678,12.12345678],[12.12345678,12.12345678],..]
То есть это выглядит как list of list
. Но иногда эта строка имеет искажения, которые выглядят так:
[12.12[12.12345678,12.12345678],
Еще один такой случай
[21.28211533,21.22[21.28211517,84.13454000],
Дополнительный [12.12
можно увидеть в первом примере. Могут быть и другие форматы, из-за которых он тоже не работает.
В настоящее время я использую ast.literal_eval
, чтобы проверить, находится ли он в формате list of lists
import pandas as pd
import ast
import sys
df = pd.read_csv("whole.csv", sep = ";")
_ = 1
for index, row in df.iterrows():
try:
ast.literal_eval(row["gnns_base_lat_long"])
_ += 1
print("\rSuccessful %d" % _, end="")
except:
_ += 1
print("Fail %d" % _)
print(row["gnns_base_lat_long"])
print("\n")
sys.exit(0)
Как написать сценарий, чтобы в случае сбоя ast.literal_eval
я пошел в эту строку, чтобы найти причину сбоя?
Пример вывода будет
Fail: [12.12[12.12345678,12.12345678],
Файл с образцами данных. Это загружаемый CSV-файл. Используйте ";"
в качестве разделителя.
Было бы замечательно, если бы я мог получить обобщенный ответ , который печатает все случаи, в которых он терпит неудачу (то есть это не list of list
)