python—计算有多少不同的单词有两个字母“o”

nkhmeac6  于 2021-05-24  发布在  Spark
关注(0)|答案(3)|浏览(826)

我刚到apachespark。目前,我正在对一篇文章进行统计分析。我开始读取文本并将其存储在变量中,如下所示:

  1. loremRDD = sc.textFile(fileName, 8).map(removePunctuation).filter(lambda x: len(x)>0)
  2. # First 10 lines
  3. loremRDD.take(10)

结果是 PythonRDD[66] at RDD at PythonRDD.scala:53 变量。下面是正文的前10行:

  1. ['aut minima deleniti et autem minus illo esse dolores eligendi corrupti dolore minima nostrum eos nobis nam nihil aspernatur nam ut quae sint laborum ut dolores error possimus aperiam consequatur',
  2. 'pariatur sed quo non itaque qui pariatur saepe ad quis consequatur nihil iste molestias et eos ut expedita vel reiciendis dolorem enim doloribus quam architecto aperiam',
  3. 'sed repudiandae pariatur similique est aut sequi animi in aperiam enim ipsa enim dolorem inventore aut quo odio in consequatur et',
  4. 'aspernatur ad esse et aliquid itaque dolores rerum quia commodi explicabo non magnam nostrum consectetur non sint eum nulla et aut quis doloribus itaque nulla molestiae quis est est quo facilis incidunt a ipsa in itaque sed aut nobis facere dignissimos atque unde cum ea vero',
  5. 'tenetur vel quod voluptatum laudantium dolores neque aut est modi qui aperiam itaque aperiam quae ratione doloremque aut delectus quas qui',
  6. 'qui placeat vel ipsam praesentium sint recusandae dicta minus praesentium omnis sequi a sed veritatis porro ab et officia esse commodi pariatur sequi cumque',
  7. 'mollitia facilis amet deleniti quia laborum commodi et molestias maxime quia dignissimos inventore neque libero deleniti ad quo corrupti numquam quis accusantium',
  8. 'architecto harum sunt et enim nisi commodi et id reprehenderit illum molestias illo facilis fuga eum illum quasi fugit qui',
  9. 'modi voluptatem quia et saepe inventore sed quo ea debitis explicabo vel perferendis commodi exercitationem sequi eum dolor cupiditate ab molestiae nemo ullam neque hic ipsa cupiditate dolor molestiae neque nam nobis nihil mollitia unde',
  10. 'voluptates quod in ipsum dicta fuga voluptatibus sint consequatur quod optio molestias nostrum repellendus consequatur aliquam fugiat provident omnis minus est quisquam exercitationem eum voluptas fugit quae eveniet perspiciatis assumenda maxime']

我需要知道有多少不同的单词有两倍的字母“o”。例如,单词dolorem有两个字母'o'。
目前,我´我创造了 distintWordsRDD 它存储文本中包含的所有不同单词,如下所示:

  1. loremWordsRDD = loremRDD.flatMap(lambda x: x.split(' '))
  2. distintWordsMapRDD = loremWordsRDD.map(lambda word: (word,1)).reduceByKey(lambda a,b:a+b)
  3. distintWordsRDD=distintWordsMapRDD.keys().distinct()
  4. # Showing 8 first words
  5. print(distintWordsRDD.take(8))

前8个单词的结果是:

  1. ['tempora', 'sapiente', 'vitae', 'nisi', 'quidem', 'consectetur', 'perferendis', 'debitis']

我的问题是我不知道´我不知道如何从 distintWordsRDD 包含两个“o”的单词的列表。

uajslkp6

uajslkp61#

我通过以下方法解决了这个问题:

  1. results = distintWordsRDD.filter(lambda word: word.count('o')==2)
  2. print (results.collect())
  3. print(results.count())

结果:

  1. ['porro', 'odio', 'laboriosam', 'doloremque', 'doloribus', 'dolores', 'dolor', 'corporis', 'commodi', 'optio', 'dolorum', 'dolore', 'dolorem']
  2. 13
gdx19jrr

gdx19jrr2#

如果你只有一根弦 sentence :

  1. results = set(word for word in sentence.split() if word.count('o') == 2)

如果你有名单 sentences 字符串(这是您在问题中显示的内容):

  1. results = set(
  2. word
  3. for sentence in sentences
  4. for word in sentence.split()
  5. if word.count('o') == 2
  6. )

我在用 set 统一结果。
示例中句子列表的输出:

  1. {'odio', 'dolorem', 'dolore', 'doloremque', 'dolor', 'doloribus', 'optio', 'commodi', 'porro', 'dolores'}

如果您需要一个列表,那么只需转换 set 在一个 list : results = list(results)) .

展开查看全部
cvxl0en2

cvxl0en23#

以下应起作用:

  1. your_text=''.join(your_original_list_of_texts)
  2. result=[i for i in your_text.split() if i.count('o')==2]
  3. print(result)
  4. ['dolores', 'dolore', 'dolores', 'dolorem', 'doloribus', 'dolorem', 'odio']

但是,您提供的文本被拆分为许多子文本(“sometext1”、“sometext2”、“sometext3”等),并且它需要一些额外的工作,这样它将变成一个简单的文本格式(“alltext”)。如果您提供输入文本的确切细节,我将调整代码,以便它可以正确地处理输入,而无需额外的手动工作

相关问题