当前位置: 首页 > 知识库问答 >
问题:

如何将txt文件中的数据解析成模型?

郑茂勋
2023-03-14

我有一个txt文件,里面有数据,我需要解析这些数据:

Dance
#dance #music #dancer #love #viral #hiphop #like #instagood #fashion #tiktok #instagram #follow #ballet #rap #explore #trending #explorepage #likeforlikes #art #dancelife #followme #video #youtube #dancechallenge #d #cute #pocodance

Funny
#funny #lol #lmao #lmfao #hilarious #laugh #laughing #tweegram #fun #friends #photooftheday #friend #wacky #crazy #silly #witty #instahappy #joke #jokes #joking #epic #instagood #instafun #funnypictures #haha #humor

Gaming
#gamergirl #gamestagram #video #winning #gaminglife #pcgaming #gamer #online #playing #playinggames #videogames #instagaming #gamerguy #instagamer #onlinegaming #game #play #gamingsetup #instagood #videogameaddict #photooftheday #games #gaming #pc #gamin #instagame #gamingmemes

我想把它解析成一个模型:

struct HashTags {
    var title = ""
    var tags = [String]()
}

我尝试使用下一段代码将txt文件转换成我需要的数据:

class ViewController: UIViewController {
    
    var hashtags = [HashTags]()

    override func viewDidLoad() {
        super.viewDidLoad()
        
        convert()
        print(hashtags)
    }


    func convert() {
        do {
            if let path = Bundle.main.path(forResource: "tags", ofType: "txt"){
                let data = try String(contentsOfFile: path, encoding: .utf8)
                let tuples = data.split(whereSeparator: \.isNewline)
                
                var title = ""
                var tags = [String]()
                
                for (position, item) in tuples.enumerated() {
                    if position % 2 == 0 {
                        title = String(item)
                    } else {
                        tags = item.components(separatedBy: " ")
                    }
                    
                    let tag = HashTags(title: title, tags: tags)
                    hashtags.append(tag)
                }
                
            }
        } catch let err as NSError {
            print(err)
        }
        
    }

}

但我得到的下一个数据是重复的:

[TikTags.HashTags(title: "Dance", tags: []),
TikTags.HashTags(title: "Dance", tags: ["#dance", "#music", "#dancer", "#love", "#viral", "#hiphop", "#like", "#instagood", "#fashion", "#tiktok", "#instagram", "#follow", "#ballet", "#rap", "#explore", "#trending", "#explorepage", "#likeforlikes", "#art", "#dancelife", "#followme", "#video", "#youtube", "#dancechallenge", "#d", "#cute", "#pocodance"]),
TikTags.HashTags(title: "Funny", tags: ["#dance", "#music", "#dancer", "#love", "#viral", "#hiphop", "#like", "#instagood", "#fashion", "#tiktok", "#instagram", "#follow", "#ballet", "#rap", "#explore", "#trending", "#explorepage", "#likeforlikes", "#art", "#dancelife", "#followme", "#video", "#youtube", "#dancechallenge", "#d", "#cute", "#pocodance"]),
TikTags.HashTags(title: "Funny", tags: ["#funny", "#lol", "#lmao", "#lmfao", "#hilarious", "#laugh", "#laughing", "#tweegram", "#fun", "#friends", "#photooftheday", "#friend", "#wacky", "#crazy", "#silly", "#witty", "#instahappy", "#joke", "#jokes", "#joking", "#epic", "#instagood", "#instafun", "#funnypictures", "#haha", "#humor"]),
TikTags.HashTags(title: "Gaming", tags: ["#funny", "#lol", "#lmao", "#lmfao", "#hilarious", "#laugh", "#laughing", "#tweegram", "#fun", "#friends", "#photooftheday", "#friend", "#wacky", "#crazy", "#silly", "#witty", "#instahappy", "#joke", "#jokes", "#joking", "#epic", "#instagood", "#instafun", "#funnypictures", "#haha", "#humor"]),
TikTags.HashTags(title: "Gaming", tags: ["#gamergirl", "#gamestagram", "#video", "#winning", "#gaminglife", "#pcgaming", "#gamer", "#online", "#playing", "#playinggames", "#videogames", "#instagaming", "#gamerguy", "#instagamer", "#onlinegaming", "#game", "#play", "#gamingsetup", "#instagood", "#videogameaddict", "#photooftheday", "#games", "#gaming", "#pc", "#gamin", "#instagame", "#gamingmemes"])]

我做错了什么?我怎样才能得到我想要的?

共有1个答案

水瀚漠
2023-03-14

问题是,每个循环迭代1行,其中标题行没有标记,而不同的标记有前一个标题,您需要

for (position, item) in tuples.enumerated() {
    if position % 2 == 0 {
        title = String(item)
    } else {
        tags = item.components(separatedBy: " ")
        let tag = HashTags(title: title, tags: tags)
        hashtags.append(tag)
    }
}
 类似资料:
  • 问题内容: 我有一个.txt文件,其中包含以下详细信息: 我想做的是解析此广告,使值以更易读的格式(如果可能)转换为数组。 谢谢 问题答案: 您可以这样轻松地做到这一点 首先,您可以使用函数打开文本文件,然后使用函数在换行符上剪切字符串。这样,您将获得一个数组,其中所有行都分开。然后使用该函数可以删除第一行,因为它是标题。 获取行之后,您可以遍历数组并将所有信息放入名为的新数组中。从零行开始,您将

  • null 我现在的代码: 此代码返回。我知道这是因为对于表行,我使用的是,默认情况下它在空格上拆分。由于有些列缺少值,因此对于第二个和htird表,表头中的元素数和表行中的元素数不匹配。我正在努力解决这个问题,因为表示缺失值的空格字符的数量对于每个表来说是不同的。 我的问题是:是否有一种方法可以解释某些列中丢失的值,以便在丢失值为null或NaN的情况下获得一个DataFrame作为输出?

  • 我是java新手,我想知道如何读取。txt文件,然后将每一行都放入数组单元格中。.txt文件的格式必须如下所示: 我已经尝试创建一个以这种方式实现的ReadFile类:

  • 我有1000个文本文件。每个都有日期(我做了索引)和股票价格(列0)。我已经创建了代码来查找单个文件的价格的移动平均线,以及价格和移动平均线之间的滚动差异。我想为每个文件创建这样的代码。我必须在组中上传它们,因为它需要太多的内存来一次性上传它们。 我想我必须使用for循环来遍历文件并找到每个文件的度量。但我该怎么做呢?我如何将所有文件上传到一个组中,然后将它们分组到一个变量中,然后创建一个循环来查

  • 问题内容: 我有以上述格式给出的.Data文件。我正在用Java编写程序,该程序将从.data文件中获取值并将其放入缓冲区中。我的Java程序通过JDBC连接到Mysql(windows)。所以我需要从上述格式的文件中读取值,并将其放入缓冲区 这样,我将存储这些值,并且jdbc将填充Mysql(windows)上的数据库表。请告诉我最好的方法。 问题答案: 查看此问题的答案,以读取文件行并将其拆分

  • 我以前没有使用过JSON数据,因此问题来了。我在文件中有以下JSON对象。 这是我的模型对象。 我的任务是读取JSON对象并返回模型对象列表。 我已经导入了简单的。json系列jar,这是我读取文件的代码。 我的问题是, 如何将JSON文档解析为我的Model对象? 如果输入文件是JSON但格式不同,如何抛出异常/处理异常? 感谢任何帮助。