【问题标题】:Extract flat files contents into individual words and store into database将平面文件内容提取为单个单词并存储到数据库中
【发布时间】:2014-06-25 17:35:42
【问题描述】:

我已经做了很多互联网搜索以找到一些信息无济于事..希望你能帮助我..

我希望能够使用具有正常内容(即完整的英文句子、段落等)的平面文件,提取每个单词并将每个单词单独存储在 SQL 数据库中,每行一个单词(没关系如果有空格但可以保留撇号等字符)

然后我想要一个带有代码的 HTML 页面来访问这个 DB 并一次一个单词地向用户输出文本,本质上是在网页上逐字“写入”输入的文件文本。

这只是一个编码练习,但我很沮丧,因为我知道是什么但不知道如何......我不知道从哪里开始。请注意,其中一些文件可能相当大 ~ 20,000 字,因此任何解决方案都可能需要考虑性能因素。

TL;DR:我想从包含普通日常句子的文本文件中提取单个单词到我可以从 HTML 页面检索的 SQL 数据库中。

【问题讨论】:

  • 只是为了获得更多信息 - 你为什么要存储这些单词?你想制作字典,还是查找最常用的单词?
  • 另外,当你问问题时,你应该只选择一个你想问的部分——即你在拆分字符串、读入输入文件、将它们添加到数据库等方面是否有问题.?这将有助于保持答案简短且更易于理解。请参阅下面我的回答,了解您可以提出更具体问题的不同部分。

标签: java python xml


【解决方案1】:

简单的阅读和拆分练习

    with open(<filename>) as f:
        dd = {}
        for ln in f:
            wds = ln.strip().split()
            for word in wds:
                dd[word] = 1 # need something for value

    for wkey in dd:
        <insert into db>                

【讨论】:

    【解决方案2】:

    好吧,在开始之前,您应该只选择一种编程语言。由于您似乎是初学者,因此我强烈推荐 Python 而不是 Java,但这取​​决于雇主/教授/等是否要求您使用任何特定语言。

    还需要指出的是,这也是您选择的一项非常艰巨的任务。我将尝试为您将其分解为多个部分,但我建议您在继续之前只从其中一个部分开始,并确保它在您的本地计算机上运行,​​然后再尝试将其放到网络上。

    首先,您需要使用在文件中读取的内容,最好是逐行读取。类似于 Java 中的 FileReader/BufferedReader 或 Python 中的 open()、readlines() 函数的方法将执行这些操作。我还将查看有关您将使用的这两种语言中的任何一种的文件处理的在线教程。 Python one is here。在开始处理真实输入文件之前,请先使用测试文件或真实文件的一小部分进行练习。

    当您开始处理文件中的行时,我建议您在空格或任何标点上使用字符串拆分功能将它们拆分为单个单词,例如,.!?"。这样您就可以从文件的每一行中提取出单个单词。

    接下来,您需要为适当的编程语言选择数据库 API。我使用了PyMySQL,但也有MySQLDB 用于Python。在 Java 中有JDBC

    然后您需要在某处的服务器上构建您的数据库,最好是在与您的 HTML 页面相同的服务器上以便于连接。在开始尝试处理实际输入文件之前,您需要练习连接到数据库并添加示例行。

    您不能让普通的 HTML 直接访问数据库 - 为此您需要使用 Python 之类的编码语言。我从未将 Java 用于网页,但使用 Python,您只需输出文本并告诉服务器将其显示为网页。这样就可以了:

    #!/usr/bin/python
    # -*- coding: utf-8 -*-
    import otherstuffhere
    
    ## Must have this header to tell browser how to handle this output
    ## and must be printed first
    print ("Content-Type: text/html\n\n")
    
    ## Connect to database here
    
    ## Your code to display words from the database goes below here
    print (myfield1)
    

    还请记住,当您输出文本时,您需要将所有 HTML 标记添加到正常的文本输出中。例如,在打印每个单词时,您需要添加 &lt;p&gt;&lt;br&gt; 来结束每一行,因为尽管 Python print() 函数会自动添加换行符,但这不会转换为换行符在 HTML 中。例如:

    print ("My word list is: <br>")
    for word in dbOutputList:
        print (word)
        print ("<br>")
    

    在那之后真正的乐趣/哭泣开始了,但你应该在继续之前完成上述工作。

    【讨论】:

      猜你喜欢
      • 2020-06-24
      • 1970-01-01
      • 1970-01-01
      • 2010-11-07
      • 2021-08-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多