JSON 形式のテキストを含む UTF-8 データ ファイルからテキストを JSON オブジェクトにロードし、それを解析する必要があります。ファイルの内容や形式を制御することはできず、与えられたものに対処する必要があります。また、2.7 である Python のバージョンを制御することもできません。
このテキスト ファイルの少なくとも 1 つの値に \n が含まれています。このため、スクリプトを実行すると次のようなエラーが発生します: Expecting , delimiter: line 8 column 102 (char 470)'
ファイルの内容は次のようになります。
{
"key1": "Lorem ipsum dolor sit amet, consectetur adipiscing elit.",
"key2": "Suspendisse eu tincidunt velit. Proin mollis ligula a arcu feugiat ac imperdiet nunc sagittis. Etiam egestas fringilla tristique.\nCurabitur interdum dolor eu velit gravida et convallis purus facilisis. Aenean eu enim mi.",
"key3": "Nunc intérdum mågna nec nîbh faucibus non laoreet nisi blandit. Nunc lobortis ligula ut tellus semper in hendrerit mauris malesuada.",
"key4": "Vivamus erat turpis, fringilla id sollicitudin non, pellentesque vel lacus. Praesent placerat dapibus mauris vel hendrerit. Integer a augue leo, facilisis viverra dui. Maecenas sollicitudin adipiscing viverra. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam vestibulum commodo diam, vitae ultrices quam viverra eu. Proin eros sapien, scelerisque non condimentum vel, placerat at est. Ut fermentum mattis lacus, a eleifend ipsum euismod ac. Quisque mollis bibendum quam nec sollicitudin."
}
関連コード:
def processText(stringData):
j = json.loads(data, encoding='utf-8')
# do stuff that I can't change
dataFile = codecs.open('/path/to/file', 'r', 'utf-8')
data = dataFile.read()
dataFile.close()
processText(data)
私は次のことを試しました:
json.loads(data.replace('\n','\\n')
テキスト ファイルには最大 15,000 文字が含まれているため、スクリプトがハングするだけです。json.loads("%r"%d)
ここで、d は文字列を含む変数です。これにより、ファイル内のすべての改行が \n に変換されるため、「JSON オブジェクトをデコードできませんでした」というエラーが発生しますが、これは発生する必要はありません。
この文字列を JSON オブジェクトにロードするにはどうすればよいですか?