How to parse a txt file to json?
我有一个包含8000行信息??的文本文件。我想将其解析为JSON,以便在iOS应用程序中使用它。因为解析这种txt文件大约需要35秒钟,所以这对用户体验不利。
文本文件如下所示:
1 2 3 4 5 6 7 | TURKIYE;ADANA;ADANA;36,9914194;35,3308285;03:00:00 TURKIYE;ADANA;ALADA??;37,545348;35,394608;03:00:00 TURKIYE;ADANA;CEYHAN;37,028765;35,8124309;03:00:00 TURKIYE;ADANA;FEKE;37,814467;35,910391;03:00:00 TURKIYE;ADANA;?°MAMO??LU;37,2984443;35,6095474;03:00:00 TURKIYE;ADANA;KARAISALI;37,2758825;35,1268781;03:00:00 TURKIYE;ADANA;KARATA??;36,6649776;35,2587964;03:00:00 |
我只需要" TURKIYE"," ADANA"," ALADA ??","纬度"和"经度"部分,不需要最后的" 03:00:00"部分。
编辑:
忘记提及某事。某些行的文本文件不包含第三列。例如;
1 2 3 4 | AVUSTURYA;HORBRANZ;47,5557073;9,7525947;01:00:00 AVUSTURYA;HORN;48,66607;15,65716;01:00:00 AVUSTURYA;IMST;47,24013;10,73954;01:00:00 AVUSTURYA;IMSTERAU;47,21018;10,70901;01:00:00 |
我想像"如果第三列不存在,则在其中打印nil值"那样解析它们。
我的txt解析代码为:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | let textFilePath = Bundle.main.path(forResource:"LatLongData", ofType:"txt") let fileManager = FileManager.default if fileManager.fileExists(atPath: textFilePath!) { do { let fullText = try String(contentsOfFile: textFilePath!, encoding: String.Encoding.utf8) let lines = fullText.components(separatedBy:"\ ") as [String] for line in lines { let data = line.components(separatedBy:";") let locationData = LocationData() if data.first =="TURKIYE" || data.first =="ABD" { locationData.country = data[0] locationData.city = data[1] locationData.district = data[2] locationData.latitude = data[3] locationData.longitude = data[4] locationData.compoundKey ="\\(data[0])-\\(data[1])-\\(data[3])" } else { locationData.country = data[0] locationData.city = data[1] locationData.latitude = data[2] locationData.longitude = data[3] locationData.compoundKey ="\\(data[0])-\\(data[1])-\\(data[3])" } locationData.writeToRealmDB() } } catch let error as NSError { print(error.localizedDescription) } |
如何将此文本转换为JSON以在iOS应用中使用?
预先感谢。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | import pandas as pd with open('filename.txt', 'r') as f: lines = f.readlines() for line in lines: if line.count(';') == 4: index = line.index(';', 2) line = line[:index] + ';' + line[index:] with open('filename2.txt', 'a') as f2: f2.write(line) df = pd.read_csv('filename2.txt', header=None, sep=';') df = df.iloc[:, :-1] df.columns = ['col1', 'col2', 'col3', 'Latitude', 'Longitude'] df.to_json('filename.json') |
http://pandas.pydata.org/pandas-docs/stable/io.html