如果单词的第一个字母是元音,如何返回 1,否则返回 0。映射器(MapReduce)问题

2024-01-26

这是我正在处理的 MapReduce 问题的第一部分。我需要一个函数,如果单词的第一个字母以元音开头,则返回 1,否则返回 0。

该程序通过将文本文件传输到映射器来在终端中运行,如下所示:

cat test.txt | python3 mapper.py

这是包含字符串的文本文件的预期输出its a beautiful life:

i 1 1 0   
t 1 0 0
s 1 0 0
a 1 1 1
b 1 0 0
e 1 0 0
a 1 0 0
u 1 0 0
t 1 0 0
i 1 0 0  
f 1 0 0
u 1 0 0
l 1 0 0
l 1 0 0
i 1 0 0 
f 1 0 0
e 1 0 1

我成功完成了前两列输出的分配,但第三列出现了问题。如果单词的第一个字母是元音,则应该生成 1,否则生成 0。

我当前的输出如下所示:

i 1 1 0
t 1 1 0
s 1 1 0
a 1 1 0
b 1 1 0
e 1 1 0
a 1 1 0
u 1 1 0
t 1 1 0
i 1 1 0
f 1 1 0
u 1 1 0
l 1 1 0
l 1 1 0
i 1 1 0
f 1 1 0
e 1 1 0

这是我到目前为止编写的代码:

import sys
import re
pattern = re.compile("^[a-z]+$") # matches purely alphabetic words
starting_vowels = re.compile("(^[aeiouAEIOU])") # matches starting vowels 
ending_vowels = re.compile("[aeiouAEIOU]$") # matches ending vowels
# starting_vowel_match = 0
ending_vowel_match = 0

def first_vowel():
    for token in tokens:
        if starting_vowels.match(token[0]):
            yield '1'
        else:
            yield '0'

for line in sys.stdin:
    line = line.strip() # removes leading and trailing whitespace
    tokens = line.split() # splits words into list, needed for part 2
    mashed_line = line.replace(" ","")
    lower_mashed_line = mashed_line.lower()
    for letter in lower_mashed_line: 
        if pattern.match(letter): # if pattern matches, prints 'word 1'
            print('%s 1' % letter, next(first_vowel()), ending_vowel_match)

分别迭代单词和字母,找出每个字母对应的单词,然后重置starting_vowel_match第一个字母之后:

import sys
import re

pattern = re.compile("^[a-z]+$")  # matches purely alphabetic words
starting_vowels = re.compile("(^[aeiouAEIOU])")  # matches starting vowels
ending_vowels = re.compile("[aeiouAEIOU]$")  # matches ending vowels
starting_vowel_match = 0
ending_vowel_match = 0

for line in sys.stdin:
    line = line.strip()  # removes leading and trailing whitespace
    words = line.lower().split()  # splits the line into words and converts to lowercase
    for word in words:
        starting_vowel_match = 1 if starting_vowels.match(word[0]) else 0
        # ternary operator, word[0] is the first letter of the word

        for letter in word:
            if pattern.match(letter):
                print("%s 1" % letter, starting_vowel_match, ending_vowel_match)
                starting_vowel_match = 0 # reset starting vowel match after first letter

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如果单词的第一个字母是元音,如何返回 1,否则返回 0。映射器(MapReduce)问题 的相关文章

随机推荐

  • 检查 Android/Java 上的端口是否打开

    我想检查端口是否打开 或者服务器是否正在其上运行 我已经以多种方式尝试过 例如 system bin ping 和 InetAddress 但如果我是对的 我无法使用这些 ping 特定端口 这次我用 DatagramSockets 的想法
  • 显示软键盘时出现对话框

    我有一个扩展的类Dialog 在那里面Dialog我有一个EditText and a ListView 当该对话框显示时 我可以调出软键盘 但我的问题是我们可以让对话框在显示软键盘时不弹出吗 我尝试改变softInputMode在布局参数
  • 使用 Mathematica 7 调试 Mathematica 5 上的工作程序

    我目前正在阅读 Mathematica 编程指南 并试图编写这本书的第一个程序 基本上 当我运行以下程序时 Plot3D Re Exp 1 x I y x 0 02 0 022 y 0 04 0 042 PlotRange gt 1 8 P
  • 如何使用 gradle 0.7+ 将 .so 文件添加到 android 库项目

    项目结构 应用程序项目 gt 取决于库项目 图书馆计划 有一个用于编译 jni 库的文件夹 jniLibs srcDirs libs 我尝试按照示例应用程序将以下内容添加到 build gradle 的 android 元素中https a
  • 在 JQuery 中获取 Node 的原始 HTML

    我用过 parent html 获取内部 html parent 但是我如何获取父级本身的 html 呢 用例是 我获取一个像这样的输入节点 var field input 我希望能够获取该节点的原始 html
  • 用户存在和身份验证

    我正在使用此代码使用服务在后台检测我的 Android 应用程序中的用户存在 final FirebaseAuth mAuth FirebaseAuth getInstance final FirebaseDatabase database
  • 动态规划和分而治之

    我正在读书动态规划的笔记 http www es ele tue nl education 5MC10 Solutions knapsack pdf 我遇到了以下评论 如果子问题不是独立的 即 子问题共享子子问题 然后分而治之算法重复解决公
  • Android 获取屏幕宽度和高度

    如何获取屏幕宽度和高度并在以下位置使用该值 Override protected void onMeasure int widthSpecId int heightSpecId Log e TAG onMeasure widthSpecId
  • 将分隔的字段合并为一个

    我在 Ada 工作 我有一个非常丑陋的类型 我无法修改 我想做一些易于使用的事情 类型是这样的 for T Ugly Type Alignment use 4 for T Ugly Type Size use 48 for T Ugly T
  • 比 SHA1 更好的散列

    我正在开发一个应用程序 我需要存储用户密码 所以我想将其存储在注册表的当前用户类中 但出于显而易见的原因我也想对其进行哈希处理 并且我我看到新闻报道称 SHA1 已被破解 标准 系统或 net 中是否有更好的 未破解的 哈希算法 SHA1
  • 使用 & 符号解析 XML

    我有一个包含 XML 的字符串 我只想将其解析为 Xelement 但它有一个 符号 我在使用 HtmlDecode 解析它时仍然遇到问题 有什么建议么 string test
  • 如何在 django 中实现 ldap 身份验证(无需管理员凭据)

    我的设置 Django 3 0 Python 3 8 django auth ldap我的组织中有 LDAP 服务器 Active Directory 服务器 我正在构建一个 Django 应用程序 它为所有用户提供一些操作 我知道 Dja
  • C 样式数组不再适用于记录

    我以前使用过这个人为的代码 record Foo int bar 这是利用C型数组 符号 它在 Java 15 中编译得很好 现在 突然之间 随着正式发布records在 Java 16 中 它不再编译 这是输出jshell jshell
  • 运行闪亮应用程序时访问/使用 R 控制台

    有谁知道在运行闪亮的应用程序时是否能够访问 R 控制台 如果可能的话 在后台运行闪亮的应用程序也会有帮助 我需要这个来操作 GlobalEnv 中的对象 这些对象在闪亮的应用程序中使用 并且必须使用命令行来完成 启动应用程序时 控制台很忙
  • 无法在简单示例中从 Spark ML 运行 RandomForestClassifier

    我尝试过运行实验RandomForestClassifier来自spark ml包 版本 1 5 2 我使用的数据集来自LogisticRegression中的示例Spark 机器学习指南 http spark apache org doc
  • Spring:在 Java 配置中定义自定义 @Transactional 行为

    我希望 Spring 回滚带有注释的方法上的事务 Transactional以防该方法抛出已检查的异常 等价于此 Transactional rollbackFor MyCheckedException class public void
  • RoR Net::HTTP post 错误未定义方法“bytesize”

    我目前正在反复用头撞墙 直到解决这个问题 我正在使用 ruby 1 9 3 p194 和 Rails 我正在尝试发出一个发布请求 我可以使用 Net HTTP post form 很好地完成该请求 但我不能在这里使用它 因为我需要在标头中设
  • 如何在 WPF 中隐藏组合框的项目

    有没有办法在 WPF 中隐藏组合框的项目 在我的用户控件中 有一个列表框 其中复选框项目绑定到 ObservableCollection 和一个带有组合框的数据网格
  • TypeError:“NoneType”对象在 Google Colab 中不可调用

    下面导入的包和模型被定义为允许访问构建操作 import matplotlib pyplot as plt import tensorflow as tf import numpy as np import cv2 import os fr
  • 如果单词的第一个字母是元音,如何返回 1,否则返回 0。映射器(MapReduce)问题

    这是我正在处理的 MapReduce 问题的第一部分 我需要一个函数 如果单词的第一个字母以元音开头 则返回 1 否则返回 0 该程序通过将文本文件传输到映射器来在终端中运行 如下所示 cat test txt python3 mapper