プロが教える店舗&オフィスのセキュリティ対策術

Pythonでegrep機能をつかいたいと思いまして
下記URL
https://qiita.com/obb1120/items/ad93bd0033a09c9e …
を丸々コピーしてみました。
結果、list_2.txtの中身が
0002
0004
でしたら、記事通りの理想的な結果になるのですが
list_2.txtの中身が
0004
0002
の場合ですと、結果が異なってしまいます。
list_2.txtの中身の順番に関係なく
list_1.txtの上から順に出力してくれますコードって
ありませんでしょうか?

A 回答 (3件)

1番目のスクリプトの


r_list = [line1 for line2 in list2 for line1 in list1 if line2 in line1]

r_list = [line1 for line1 in list1 for line2 in list2 if line2 in line1]
に変えてください。
    • good
    • 0
この回答へのお礼

お礼が消えていますようで再度
ありがとうございます。
期待通り動きました。

お礼日時:2024/03/17 22:32

おおっと。

ウッカリしてた。
Windowsか。
LinuxもiMacもUNIX系OSで、grepコマンドがあるんで意識してなかった。
そうだな、WIndowsだとgrepは素じゃ使えんか・・・・・・。

Windowsはよう知らんが、解決策はおそらく2つ程ある。

1. Windows PowerShellでの代替コマンドをつかう。

PythonのsubprocessはOSの機能を呼び出すんで、当然Windowsの機能も呼び出せる。
Windows PowerShellでのUNIXのgrepにあたるコマンドは次らしい。

Select-String:
https://learn.microsoft.com/ja-jp/powershell/mod …

これでgrep -fにあたるオプション付きコマンドを探してやってみる。
大丈夫、多分うまく行くよ。
知らんけど(笑)。

2. Windowsにgrepをダウンロード/インストールする。

Windowsにgrepが無ければgrepをダウンロード/インストールしちゃえばいいじゃない、と言う手段。

Windows10 grepをインストールして使用する手順:
https://mebee.info/2020/12/16/post-25824/

なんかのWindows用テキストエディタにはgrepが同梱されてる、っつーんで探してみたらあった。
割にコマンドラインツールは移植がGUIに比べるとラクなんで、こういう風に「単発ツールとして」Windows向けコンパイル済みバイナリが配布されてる事もある。
UNIX系ツールを持ってくるのも不可能じゃないんで、場合によっては探してみよう。

他にも、Cygwinつかうとか、WSLつかうとか考えられるけど、上記2つに比べると大仰しい、でしょ。

以上。
    • good
    • 0
この回答へのお礼

ありがとう

お礼日時:2024/03/14 22:42

?


2番めの方法でやればエエんちゃう?
    • good
    • 1
この回答へのお礼

ありがとう

お礼日時:2024/03/14 22:42

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A