質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.51%

  • Ruby

    8988questions

    Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

rubyプログラミングの空白処理について

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 512

ruby_11

score 23

英語文章を分析するためにRubyを使ってプログラムを書いています。

また、英語はTEDのサイトのスクプトを使用しています。

実際に、単語と単語を空白で区切り、配列に格納する段階ですが、スクリプトをそのまま解析すると空白で区切ることができる部分とできない部分があります。

区切ることができない部分の空白を一度削除し、再び空白を作って実行すると上手く出力できるのですが、どこを改善すれば上手く出力できるのでしょうか?

スクリプトを保存する段階で問題があるのでしょうか?

例えば、出力結果1では、name doesn'tが空白で区切ることができていませんが、テキスト内で、1度空白を削除し、空白を作って出力すると、出力結果2のように上手く出力できます。

イメージ説明
イメージ説明
イメージ説明
イメージ説明

追加の質問です。

filename = ARGV[0]
file = File.open(filename)
text = file.read
file.close

text1 = text.gsub(/\,|\./, "")
column = text1.split(/ /)
puts column
print "I : ", column.select{|item1| item1 == "I"}.length, "\n"

0:11
Growing up, I didn't always understand why my parents made me follow the rules that they did. Like, why did I really have to mow the lawn? Why was homework really that important? Why couldn't I put jelly beans in my oatmeal?
0:26
My childhood was abound with questions like this. Normal things about being a kid and realizing that sometimes, it was best to listen to my parents even when I didn't exactly understand why. And it's not that they didn't want me to think critically. Their parenting always sought to reconcile the tension between having my siblings and I understand the realities of the world, while ensuring that we never accepted the status quo as inevitable.
0:50
I came to realize that this, in and of itself, was a very purposeful form of education. One of my favorite educators, Brazilian author and scholar Paulo Freire, speaks quite explicitly about the need for education to be used as a tool for critical awakening and shared humanity. In his most famous book, "Pedagogy of the Oppressed," he states, "No one can be authentically human while he prevents others from being so."
1:19
I've been thinking a lot about this lately, this idea of humanity, and specifically, who in this world is afforded the privilege of being perceived as fully human. Over the course of the past several months, the world has watched as unarmed black men, and women, have had their lives taken at the hands of police and vigilante. These events and all that has transpired after them have brought me back to my own childhood and the decisions that my parents made about raising a black boy in America that growing up, I didn't always understand in the way that I do now.
1:52
I think of how hard it must have been, how profoundly unfair it must have felt for them to feel like they had to strip away parts of my childhood just so that I could come home at night.
2:04
For example, I think of how one night, when I was around 12 years old, on an overnight field trip to another city, my friends and I bought Super Soakers and turned the hotel parking lot into our own water-filled battle zone. We hid behind cars, running through the darkness that lay between the streetlights, boundless laughter ubiquitous across the pavement. But within 10 minutes, my father came outside, grabbed me by my forearm and led me into our room with an unfamiliar grip. Before I could say anything, tell him how foolish he had made me look in front of my friends, he derided me for being so naive. Looked me in the eye, fear consuming his face, and said, "Son, I'm sorry, but you can't act the same as your white friends. You can't pretend to shoot guns. You can't run around in the dark. You can't hide behind anything other than your own teeth."
2:59
I know now how scared he must have been, how easily I could have fallen into the empty of the night, that some man would mistake this water for a good reason to wash all of this away.
3:12
These are the sorts of messages I've been inundated with my entire life: Always keep your hands where they can see them, don't move too quickly, take off your hood when the sun goes down. My parents raised me and my siblings in an armor of advice, an ocean of alarm bells so someone wouldn't steal the breath from our lungs, so that they wouldn't make a memory of this skin. So that we could be kids, not casket or concrete. And it's not because they thought it would make us better than anyone else it's simply because they wanted to keep us alive.
3:38
All of my black friends were raised with the same message, the talk, given to us when we became old enough to be mistaken for a nail ready to be hammered to the ground, when people made our melanin synonymous with something to be feared.
3:51
But what does it do to a child to grow up knowing that you cannot simply be a child? That the whims of adolescence are too dangerous for your breath, that you cannot simply be curious, that you are not afforded the luxury of making a mistake, that someone's implicit bias might be the reason you don't wake up in the morning.
4:09
But this cannot be what defines us. Because we have parents who raised us to understand that our bodies weren't meant for the backside of a bullet, but for flying kites and jumping rope, and laughing until our stomachs burst. We had teachers who taught us how to raise our hands in class, and not just to signal surrender, and that the only thing we should give up is the idea that we aren't worthy of this world. So when we say that black lives matter, it's not because others don't, it's simply because we must affirm that we are worthy of existing without fear, when so many things tell us we are not. I want to live in a world where my son will not be presumed guilty the moment he is born, where a toy in his hand isn't mistaken for anything other than a toy.
4:46
And I refuse to accept that we can't build this world into something new, some place where a child's name doesn't have to be written on a t-shirt, or a tombstone, where the value of someone's life isn't determined by anything other than the fact that they had lungs, a place where every single one of us can breathe.
5:03
Thank you.

上の英語テキストでIの単語数を出力しているのですが、実際にIの数は18個で、結果としては、15個しか出力できていません。

プログラムの改善点を教えていただけませんか?

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • 退会済みユーザー

    退会済みユーザー

    2017/06/21 16:27

    画像を手打ちしても良いですが、それだと恐らく再現しないと思います。p "name doesn't".split(/ /)を試してみましたが["name", "doesn't"]と出力されています。

    キャンセル

  • ruby_11

    2017/06/21 16:32

    ありがとうございます。p "name doesn't".split(/ /)で区切ることができましたが、そのようなプログラムを書かなくても、初めから区切ることができるようなプログラムを書きたいのですが、どうすればいいでしょうか? 

    キャンセル

  • 退会済みユーザー

    退会済みユーザー

    2017/06/21 16:34

    今、質問者様が示されているtext1の内容を手打ちして検証しようとしているので少々お待ちくださいませ。

    キャンセル

回答 1

checkベストアンサー

0

text =<<-EOS
4:46
And I refuse to accept that we can't build this world into something new, some place where a child's name doesn't have to be written on a t-shirt, or a tombstone, where the value of someone's life isn't determined by anything other than the fact that they had lungs, a place where every single one of us can breathe.
EOS

text1 = text.gsub(/\,|\./, "")
column = text1.split(/ /)

puts column
print "I:", column.select { |item1| item1 == "I" }.size, "\n"


実行結果例

4:46
And
I
refuse
to
accept
that
we
can't
build
this
world
into
something
new
some
place
where
a
child's
name
doesn't
have
to
be
written
on
a
t-shirt
or
a
tombstone
where
the
value
of
someone's
life
isn't
determined
by
anything
other
than
the
fact
that
they
had
lungs
a
place
where
every
single
one
of
us
can
breathe
I:1


試してみました。スペースで分割できています。
質問者様のテキストファイルに原因があるような気がします。

 追記

text =<<-EOS
0:11
Growing up, I didn't always understand why my parents made me follow the rules that they did. Like, why did I really have to mow the lawn? Why was homework really that important? Why couldn't I put jelly beans in my oatmeal?
0:26
My childhood was abound with questions like this. Normal things about being a kid and realizing that sometimes, it was best to listen to my parents even when I didn't exactly understand why. And it's not that they didn't want me to think critically. Their parenting always sought to reconcile the tension between having my siblings and I understand the realities of the world, while ensuring that we never accepted the status quo as inevitable.
0:50
I came to realize that this, in and of itself, was a very purposeful form of education. One of my favorite educators, Brazilian author and scholar Paulo Freire, speaks quite explicitly about the need for education to be used as a tool for critical awakening and shared humanity. In his most famous book, "Pedagogy of the Oppressed," he states, "No one can be authentically human while he prevents others from being so."
1:19
I've been thinking a lot about this lately, this idea of humanity, and specifically, who in this world is afforded the privilege of being perceived as fully human. Over the course of the past several months, the world has watched as unarmed black men, and women, have had their lives taken at the hands of police and vigilante. These events and all that has transpired after them have brought me back to my own childhood and the decisions that my parents made about raising a black boy in America that growing up, I didn't always understand in the way that I do now.
1:52
I think of how hard it must have been, how profoundly unfair it must have felt for them to feel like they had to strip away parts of my childhood just so that I could come home at night.
2:04
For example, I think of how one night, when I was around 12 years old, on an overnight field trip to another city, my friends and I bought Super Soakers and turned the hotel parking lot into our own water-filled battle zone. We hid behind cars, running through the darkness that lay between the streetlights, boundless laughter ubiquitous across the pavement. But within 10 minutes, my father came outside, grabbed me by my forearm and led me into our room with an unfamiliar grip. Before I could say anything, tell him how foolish he had made me look in front of my friends, he derided me for being so naive. Looked me in the eye, fear consuming his face, and said, "Son, I'm sorry, but you can't act the same as your white friends. You can't pretend to shoot guns. You can't run around in the dark. You can't hide behind anything other than your own teeth."
2:59
I know now how scared he must have been, how easily I could have fallen into the empty of the night, that some man would mistake this water for a good reason to wash all of this away.
3:12
These are the sorts of messages I've been inundated with my entire life: Always keep your hands where they can see them, don't move too quickly, take off your hood when the sun goes down. My parents raised me and my siblings in an armor of advice, an ocean of alarm bells so someone wouldn't steal the breath from our lungs, so that they wouldn't make a memory of this skin. So that we could be kids, not casket or concrete. And it's not because they thought it would make us better than anyone else it's simply because they wanted to keep us alive.
3:38
All of my black friends were raised with the same message, the talk, given to us when we became old enough to be mistaken for a nail ready to be hammered to the ground, when people made our melanin synonymous with something to be feared.
3:51
But what does it do to a child to grow up knowing that you cannot simply be a child? That the whims of adolescence are too dangerous for your breath, that you cannot simply be curious, that you are not afforded the luxury of making a mistake, that someone's implicit bias might be the reason you don't wake up in the morning.
4:09
But this cannot be what defines us. Because we have parents who raised us to understand that our bodies weren't meant for the backside of a bullet, but for flying kites and jumping rope, and laughing until our stomachs burst. We had teachers who taught us how to raise our hands in class, and not just to signal surrender, and that the only thing we should give up is the idea that we aren't worthy of this world. So when we say that black lives matter, it's not because others don't, it's simply because we must affirm that we are worthy of existing without fear, when so many things tell us we are not. I want to live in a world where my son will not be presumed guilty the moment he is born, where a toy in his hand isn't mistaken for anything other than a toy.
4:46
And I refuse to accept that we can't build this world into something new, some place where a child's name doesn't have to be written on a t-shirt, or a tombstone, where the value of someone's life isn't determined by anything other than the fact that they had lungs, a place where every single one of us can breathe.
5:03
Thank you.
EOS

p text.split(' ').count('I') # => 18


プログラム全体

# encoding: utf-8

column = open(ARGV[0], &:read).delete(',.').split(' ')
puts column
puts "I:#{column.count('I')}"

対象になっているページ
アメリカで黒人の息子を育てる方法

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/06/21 17:04

    もう一度TEDからテキストをダウンロードし、出力してみると上手くいきました。
    ありがとうございます。

    キャンセル

  • 2017/06/21 17:07

    いえいえ。どういたしまして。

    キャンセル

同じタグがついた質問を見る

  • Ruby

    8988questions

    Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。