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

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

新規登録して質問してみよう
ただいま回答率
85.35%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

2回答

256閲覧

記号( ' . )が入ると英文と判断してくれません。

shino0805

総合スコア3

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

1クリップ

投稿2020/09/25 06:51

編集2020/09/25 08:05

前提・実現したいこと

修正しました。

I'm fool.のようなシングルクォーテーションやカンマの入った文章を英文として判断したい。

発生している問題・エラーメッセージ

該当のソースコード

word = input('入力してください:')
if re.fullmatch('[^a-zA-Z]', word):
print('english')

試したこと

isalnum()でもしましたが駄目でした。
[^a-zA-Z]の後に何か追加することなどは可能なのでしょうか?

補足情報(FW/ツールのバージョンなど)

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

LouiS0616

2020/09/25 07:13

正規表現 [^a-zA-Z] の意味は理解していますか?
coco_bauer

2020/09/25 07:25

[^a-zA-Z]には、. や ' が含まれていませんから、"I'm fool."とはマッチしません。 質問者のしたいことを、もう少し具体的に説明すると回答が得られるかもしれません。
LouiS0616

2020/09/25 11:31 編集

@ChaosRepainter さん この場合定義とはどういう意味なのでしょうか。
toast-uz

2020/09/25 11:59

「英文として判断したい」とは、どういう意味でしょうか? 期待する結果と、記述したソースでの出力(期待する結果でない)を示してください。
ChaosRepainter

2020/09/26 03:51

@LouiS0616 返信遅れてすみません。 この場合、定義は「初期化」を意味してます。 編集される前、wordの定義なくwordという変数を使っていたので、そのままだと「NameError : name 'word' is not defined」と出てくるはずなので、定義するという言葉を使った方が分かりやすいかなと思いました。
guest

回答2

0

ベストアンサー

python界隈に限定されている話だと、
外しているかも知れませんが、
通常正規表現は(BRE,ERE,PCRE,ONIなんちゃらと多少のバリエーションはあれどだいたい考え方は同じですので)下記の様になるでしょう。

[^a-z]なら小文字以外と言う意味になります[]の中の^は意味の反転。
質問文の中の'[^a-zA-Z]'はアルファベット以外と言う意味ですから、
print('english')はちょっと違うでしょう。

望まれる正規表現は[0-9a-zA-Z',]ですかね。他に追加したい記号が有れば羅列
すればいいが、特殊な文字はエスケープする必要あり(ここは自分でググって)

そんなところでしょうか。

投稿2020/09/25 10:12

hana_yama_san

総合スコア923

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

shino0805

2020/09/25 23:22

わかりやすく回答していただきありがとうございます。 参考にして以下のように書いてみましたが、',が認識されないようです。 if re.fullmatch(r"[a-zA-Z',]", word): print('english') なかなか思うようにいきませぬ、、、
bsdfan

2020/09/25 23:30 編集

これだけだと1文字にしかマッチしないので、+ が必要かと。 スペースやピリオドも含まれているので、追加しないといけないです。
shino0805

2020/09/25 23:37

わー出来ました。 ありがとうございます。
hana_yama_san

2020/09/26 00:07

bsdfanさん たしかに。仰るとおりです。
guest

0

Python 正規表現で検索すると良いでしょう。

投稿2020/09/25 08:58

rtgsdfsdg

総合スコア174

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

LouiS0616

2020/09/25 09:43

さすがに不親切すぎやしませんか。 基礎が足りないと言いたいのなら、せめてもう少し詳しい検索ワードだったり入門に向いたサイトであったり、具体性のある回答が好ましいと思います。
rtgsdfsdg

2020/09/25 14:45 編集

えぇ、それは承知です。ですが、回答者はひとりじゃないです。私は、できるだけ早く情報が欲しいというニーズに答えたわけです。この回答で解決できる人も少なくありません。もし解決出来なくとも、具体性のニーズは他の回答で満たせば良いという考えからの回答です。もし、私の言動で気分を害したなら申し訳ないです。
LouiS0616

2020/09/25 15:01 編集

気分を害しているわけではありません。 若干もやっとしているのは事実ですが、主観に過ぎるのでその点はお気になさらずとも大丈夫です。 > この回答で解決できる人も少なくありません。 この主張に対しては私は懐疑的です。 本質問者が、そもそも『正規表現』という単語を知らない、あるいは調べていないという仮説が無根拠だと思うからです。 極端な話、全ての質問に対し『プログラミングを勉強してください』と回答できてしまうわけで。
hana_yama_san

2020/09/25 17:41

>>極端な話、全ての質問に対し『プログラミングを勉強してください』と回答できてしまう そうかもしれませんが、ネットワークやデータベースでつまっている人には ちょっとどうでしょうか。ましてやハードウェアで困っている人には、それは言えませんよね。 また、アセンブリを中心に勉強している人に「プログラミングを勉強してください」 と言っても、正規表現にはたどり着けないでしょう。 ま、今回の話には関係ないですが・・・
rtgsdfsdg

2020/09/25 18:23

言ってしまえば、私は暇つぶし程度でこのサイトを利用しているだけということです。
shino0805

2020/09/25 23:12

いろいろコメントしていただいてありがとうございます。 まず理解していただきたいのはこちらは勉強中であるということ。 よって業務などでは使わないことなどにも手を付けたりもします。 今回の質問はI'm the monkey.などのような英文を区別する際にカンマなどが邪魔をして英文でないと判断されてしまうようですのでそれを回避する方法を探しておりました。 質問もしっかりできなくて申し訳ございません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問