将文本文件字典上载到python字典不起作用

2024-05-20 14:38:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我用python创建了一个包含这种格式数据的字典。这是我的product.txt文件包含的内容

{"6TII7N11RJ0J": {"productName": "Hisense 58" Class 4K UHD LED Roku Smart TV HDR 58R6E3", "productDescription": "58 Hisense 4k Roku Tv W/ Hdr", "productLocation_section": "N/A", "productLocation_zone": "N/A", "productLocation_aisle": "N/A", "productImg": "http://i5.walmartimages.com/asr/e00046a4-2eb3-48dc-b9ab-f0b750c384a7_1.fbb6003cb707252842bc913860c28568.jpeg?odnHeight=180&odnWidth=180&odnBg=ffffff", "productImg1": "/ip/Hisense-58-Class-4K-UHD-LED-Roku-Smart-TV-HDR-58R6E3/587182688", "productPrice": 278, "product_stock_status": "In Stock", "productBrand": "Hisense", "productRating": 4.5, "productDept": "Electronics", "store_available": "walmart", "_partitionKey": "store=name", "storeProductId": "6TII7N11RJ0J"}, "3MI7DUPI5M39": {"productName": "Hisense 40" Class FHD (1080P) Roku Smart LED TV (40H4030F1)", "productDescription": "Hisense 40" Class 1080P FHD LED Roku Smart TV 40H4030F1", "productLocation_section": 6, "productLocation_zone": "J", "productLocation_aisle": 23, "productImg": "http://i5.walmartimages.com/asr/104b5bcf-e7da-497b-87f6-0a5a56249d27_1.5c18e44aae7893f3044b2aeeed360603.jpeg?odnHeight=180&odnWidth=180&odnBg=ffffff", "productImg1": "/ip/Hisense-40-Class-FHD-1080P-Roku-Smart-LED-TV-40H4030F1/470905078", "productPrice": 178, "product_stock_status": "Out of Stock", "productBrand": "Hisense", "productRating": 4.5, "productDept": "Electronics", "store_available": "walmart", "_partitionKey": "store=walmart", "storeProductId": "3MI7DUPI5M39"}

product.txt文件的内容是通过此代码创建的

  try:
        # WRITE THE PRODUCT TO FILE
        productFile = "storeData/store/productDir.txt"
        with open(productFile, "w") as pfile:
            pfile.write(json.dumps(NewProductDict))
    except Exception as e:
        print(e)  

现在,我需要打开product.txt文件,并将内容读回python词典。这是我尝试过的许多代码之一

def uploadProductDir():
    productFile1 = "storeData/store/productDir.txt"
    with open(productFile1, "r") as pfile:
          developer = json.load(pfile)
    for key, value in developer.items():
        print(key, ":", value, "\n")

但我得到了这个错误

Expecting value", s, err.value) from None json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

我如何上传一个包含上述python中字典数据格式的文本文件,以便迭代字典。这是一个python json字典,我错误地将其保存为.txt而不是.json文件。现在我想用python从.txt文件重新导入,以便处理数据


Tags: 文件storetxtjsonled字典valuesmart
3条回答

您确认json无效。正如@Grinjero所提到的,它需要启动{。它在product name值中还有一个额外的双引号

您可以使用eval将json转换为字典

这个代码对我有用:

import json

NewProductDict = '''
{
    "6TII7N11RJ0J": {
        "productName": "Hisense 58\' Class 4K UHD LED Roku Smart TV HDR 58R6E3",
        "productDescription": "58 Hisense 4k Roku Tv W/ Hdr",
        "productLocation_section": "N/A",
        "productLocation_zone": "N/A",
        "productLocation_aisle": "N/A",
        "productImg": "http: //i5.walmartimages.com/asr/e00046a4-2eb3-48dc-b9ab-f0b750c384a7_1.fbb6003cb707252842bc913860c28568.jpeg?odnHeight=180&odnWidth=180&odnBg=ffffff",
        "productImg1": "/ip/Hisense-58-Class-4K-UHD-LED-Roku-Smart-TV-HDR-58R6E3/587182688",
        "productPrice": 278,
        "product_stock_status": "In Stock",
        "productBrand": "Hisense",
        "productRating": 4.5,
        "productDept": "Electronics",
        "store_available": "walmart",
        "_partitionKey": "store=name",
        "storeProductId": "6TII7N11RJ0J"
    }
}
'''.strip()
   
def saveFile():
    try:
        # WRITE THE PRODUCT TO FILE
        productFile = "tmpjson.txt"
        with open(productFile, "w") as pfile:
            pfile.write(json.dumps(NewProductDict))
    except Exception as e:
        print(e)  

def uploadProductDir():
    productFile1 = "tmpjson.txt"
    with open(productFile1, "r") as pfile:
          developer = eval(json.load(pfile))  # convert json to dictionary
    for key, value in developer.items():
        print(key, ":", value, "\n")

    print(developer['6TII7N11RJ0J']['productName']) # confirm structure
        
saveFile()
uploadProductDir()

输出

6TII7N11RJ0J : {'productName': "Hisense 58' Class 4K UHD LED Roku Smart TV HDR 58R6E3", 'productDescription': '58 Hisense 4k Roku Tv W/ Hdr', 'productLocation_section': 'N/A', 'productLocation_zone': 'N/A', 'productLocation_aisle': 'N/A', 'productImg': 'http: //i5.walmartimages.com/asr/e00046a4-2eb3-48dc-b9ab-f0b750c384a7_1.fbb6003cb707252842bc913860c28568.jpeg?odnHeight=180&odnWidth=180&odnBg=ffffff', 'productImg1': '/ip/Hisense-58-Class-4K-UHD-LED-Roku-Smart-TV-HDR-58R6E3/587182688', 'productPrice': 278, 'product_stock_status': 'In Stock', 'productBrand': 'Hisense', 'productRating': 4.5, 'productDept': 'Electronics', 'store_available': 'walmart', '_partitionKey': 'store=name', 'storeProductId': '6TII7N11RJ0J'}

Hisense 58' Class 4K UHD LED Roku Smart TV HDR 58R6E3

我想出来了。我将.txt文件重新保存为.json文件,并保存了代码

def uploadProductDir():
    productFile1 = "storeData/store/productDir.json"
    with open(productFile1, "r") as pfile:
         developer = json.load(pfile)
    for key, value in developer.items():
        print(key, ":", value, "\n")

很难说看不到整个文件,但似乎您的文件不是以{开头,以}结尾(如果您的整个json文件应该是一个字典)

相关问题 更多 >