2017-06-05 407 views
1
Name: Donald J. Trump 
Username: @realDonaldTrump 
Post: I look forward to paying my respects to our brave men and women on this Memorial Day at Arlington National Cemetery later this morning. 
post's link: https://twitter.com/realDonaldTrump/status/869170615881793536 
Replies: 16,259 replies 
Retweet: 15,103 retweets 
Likes: 90,839 likes 
Date: 5:36 AM - 29 May 2017 

大家好,以上是我的first.txt文件中每個數據塊的格式。我想閱讀它並將其更改爲下面的json格式,並將其存儲到second.txt文件中。Python - 將.txt內容轉換爲json格式

def convert_to_json(path, name, username, post, link, replies, retweets, likes, retweetby, date, domainname): 
with open(path, 'a') as file: 
    stringData = [{"ContentUrl": link, 
    "Text": post, 
    "PublishDate": date.strip(), 
    "Title": "", 
    "SourceUrl": domainname, 
    "SocialNetwork": media, 
    "Source": "", 
    "Author": name, 
    "Like_count": likes.strip(), 
    "Replies_count": replies.strip(), 
    "Retweets_count": retweets.strip(), 
    "Schema": "SOCIAL_MEDIA"}] 

    objData = json.load(stringData) 
    file.write(stringData) 

上述代碼是假設採取在數據然後追加它second.txt文件。但是,我的代碼沒有設法將我想要的數據追加到我的second.txt文件中。控制檯沒有出現明顯的錯誤,我在這裏尋求所有專家的建議和幫助。

回答

0
  1. 嘗試json.dumps代替負載
  2. 爲什麼你換你的清單字典?
  3. 寫入文件的json.dumps的結果,而不是對象

    with open(path, 'a+') as file: 
        stringData = {"ContentUrl": link, 
        "Text": post, 
        "PublishDate": date.strip(), 
        "Title": "", 
        "SourceUrl": domainname, 
        "SocialNetwork": media, 
        "Source": "", 
        "Author": name, 
        "Like_count": likes.strip(), 
        "Replies_count": replies.strip(), 
        "Retweets_count": retweets.strip(), 
        "Schema": "SOCIAL_MEDIA"} 
    
        objData = json.dumps(stringData) 
        file.write(objData) 
    
+0

嗨!我將它包裝在一個列表中,主要是因爲我希望每個數據塊都是一個集合,因爲我的.txt文件中有很多塊。 – NewbieCoder

+0

我認爲這是多餘的,在你的情況下,每個塊都將成爲文件中的新字符串。看我的答案更新 – vZ10

+0

謝謝你的幫助。它工作得很好。 – NewbieCoder

0

您沒有正確使用json.load;試着這樣說:

record = {"ContentUrl": link, 
    "Text": post, 
    "PublishDate": date.strip(), 
    "Title": "", 
    "SourceUrl": domainname, 
    "SocialNetwork": media, 
    "Source": "", 
    "Author": name, 
    "Like_count": likes.strip(), 
    "Replies_count": replies.strip(), 
    "Retweets_count": retweets.strip(), 
    "Schema": "SOCIAL_MEDIA"} 

with open(path, 'a') as file: 
    objData = json.load(file) 
    objData.append(record) 
    file.write(json.dumps(objData)) 
+0

嗨!我嘗試使用上述方法,我仍然有相同的結果。數據未附加到.txt文件。 – NewbieCoder

0

所有數據添加到列表(stringData),最後寫stringData使用

第二個文件
stringData = [] #init 

def addToDataToBeWritten(path, name, username, post, link, replies, retweets, likes, retweetby, date, domainname):  

    row = {"ContentUrl": link, 
    "Text": post, 
    "PublishDate": date.strip(), 
    "Title": "", 
    "SourceUrl": domainname, 
    "SocialNetwork": media, 
    "Source": "", 
    "Author": name, 
    "Like_count": likes.strip(), 
    "Replies_count": replies.strip(), 
    "Retweets_count": retweets.strip(), 
    "Schema": "SOCIAL_MEDIA"} 
    stringData.append(raw) 

''' Read and call the method here''' 
with open(path, 'w') as file: 
    file.write(json.dumps(stringData))