• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:python)

Pythonで改行を除去し、会社名を変更する方法と正規表現で数字を抜き出す方法

rinkunの回答

  • rinkun
  • ベストアンサー率44% (706/1571)
回答No.4

解釈するのがHTMLなら、正規表現で処理するよりhtmllib等のHTML解析器を使った方が後々修正などし易いと思う。 まあ、最初はちょっと勉強しないといけないでしょうけど。

dfadsfadad
質問者

お礼

ありがとうございます。 ちょっと勉強しなおしてきます。 丁寧な解説をありがとうございました。

関連するQ&A

  • [python] 関数から配列を戻すには?

    グローバル変数(配列)の値を変えたいと思います。 ------------- line = [] def tmp_read(self, *out_line): f = open('tmp.txt') lines2 = f.readlines() # 1行毎にファイル終端まで全て読む(改行文字も含まれる) f.close() # lines2: リスト。要素は1行の文字列データ for line in lines2: print line, print *out_line = lines2 return *out_line tmp_read(self, *line) print line     ← 配列Lineの内容を確認する ------------- この「line」には、文字列を含む配列を入れる予定です。 lines2で得られた値を、戻せば出来そうな気もしますが巧くいきません。 どのように修正すれば酔いか、教えて頂けませんか。

  • pythonで制作中のプログラムのエラー修繕と速度向上を行いたいのですが...

    こんにちは。いつもお世話になっております。 今回、file("filename.txt", "r")で読み込んだ多次元配列の中から、数字の合計が一番大きくなる長方形を探し出して合計をprintするプログラムを作っています。なんだか分かりにくい説明ですみません...。 例えば、 0 -2 -7 0 9 2 -6 2 -4 1 -4 1 -1 8 0 -2 が読み込まれた配列だとしたら、左下の 9 2 -4 1 -1 8 を含む長方形内の数字の合計(9+2-4+1-1+8)が、この配列内の数字の合計の最大になります。この最大合計値を含む長方形を見つけ出して合計をprintさせたいのです。 自力で書いたものは以下です↓ myFile = file("matrix.txt", "r") row = 0 for line in myFile: line = line.rstrip() nums = line,split(" ") dim = len(nums) for col in range(dim): matrix[row][col] = int(nums(col))←ここでエラーが出てしまいました   row = row+1 myFile.close() sumMatrix = [[0 for j in range(dim)] for i in range(dim)] for m in range(dim): for n in range(dim): mySum = 0 for p in range(m+1): for q in range(n+1): mySum = mySum = matrix[p][q] sumMatrix[m][n] = mySum for i in range(dim): for j in range(dim): print sumMatrix[i][j], 8行目のエラーを解消させたいのと、このプログラムで配列が大きいものになると、とても遅くなってしまうようなので、もっと早いものにしたいのですが... ご回答、よろしくお願いします。

  • エラーの原因が分からず困ってます。

    下記のmatchのところで、エラー(TypeError: expected string or bytes-like object)が出て原因が分からず困ってます。 'ファイルをオープン' with open(target_file) as f: lines = f.readlines() '改行を削除' lines_strip = [line.strip() for line in lines] print(lines_strip)  keyword = input()  match = re.findall(keyword,lines_strip)

  • python超初心者です(3時間目)。pythonで以下のようなランダ

    python超初心者です(3時間目)。pythonで以下のようなランダム数列を生成させるにはどうしたらいいのでしょうか? 最終結果のイメージ(16進数8桁の数列x20行): 0 : c39a29eb 1 : b26cc9bb 2 : 4c494e47 ... 19: 93c85836 以下のようにコードを組んでみたのですが、 > tmp = ws.join(list) > TypeError: sequence item 0: expected string, int found のようなエラーが出てしまいます。どうやら数字を連結しようとしてるのでダメなのかな?と思っています。 ======================================== #! /usr/bin/python import random list = [] ws = "" for i in range (20): print i, ":", for j in range(8): list.append(random.randint(0,15)) tmp = ws.join(list) print tmp list = [] tmp = "" ======================================== ※ printでは必ずスペースが入ってしまうので、それを嫌う場合配列に入れて、要素を連結させなくてはならない、とwebにあったので、その方向で試してみました。 ※ また、ここではあくまでrandom を使用し、一文字(0,1,2,...E,F)づつ出力させたいと思っています。 なお、perlでは以下のように書くことができたのですが... ======================================== #! /usr/bin/perl for($i=0; $i<20; $i++){ printf ("%-02s: ", $i); for($j=0; $j<8; $j++){ printf("%x", int(rand(15)) ); } print "\n"; } ======================================== ※ んー第二言語としてpythonを学習してみていますが道のり険しそうです(やっぱrubyにしようか)... 宜しくお願い致します。

  • Perlでテキストファイルの処理方法

    Perlでファイル入力は 下記のように記述します open (IN,"myInput.txt"); $lineno = -1; while (<IN>) {  $lineno = $lineno + 1;  @lines_org[$lineno] = $_;  #print lines_org[$lineno];  #print $_,"\n";  } これで一行づつ入力できます ここで質問したいのは 入力ファイルに改行コードがないため 処理できないと思うのですが 一行づつ入力ではなく、1文字づつ入力する 入力方法はPerlにはないのでしょうか ちなみに入力ファイルは数メガある大きなファイル です よろしくおねがいします

    • ベストアンサー
    • Perl
  • Pythonで重複無しの出題をしたい。

    Pytonで初歩的なcodeを書いております。 十個の四文字熟語があります。 重複のない四文字熟語を表示したいのです。 (1)のcodeでは上手く行くのですが、(2)の様にテキストファイルから読み込むと重複します。 多分while関数を使って重複が有ったら、再度randomで重複しないデータを抽出しろとでもやるのでしょうが、上手く行きません。 while以降どの様にcodingするのか、或いはそのほかの方法を教えて頂ければ嬉しいです。 宜しくお願い致します。 (1) リストから重複無しの熟語を表示する---OK ---------------------------- import random 四文字熟語=[ '0 百花繚乱', '1 疾風迅雷', '2 明鏡止水', '3 不撓不屈', '4 国士無双', '5 魑魅魍魎', '6 行雲流水', '7 花鳥風月', '8 天下無双', '9 行雲流水' ] 空リスト = [] for カウンター in range(10): 一時保存 = random.choice(四文字熟語) while 一時保存 in 空リスト: 一時保存 = random.choice(四文字熟語) 空リスト.append(一時保存) print(一時保存) これは重複無しの熟語を表示します。 --------------------- (1) テキストファイルから、重複無しの熟語を表示する---NG import random file = open("四文字熟語.txt") lines = file.readlines() file.close() for line in lines: line = line.rstrip("\n") temp = random.choice(lines) print(temp) Shellには、 7 花鳥風月 6 行雲流水 6 行雲流水 7 花鳥風月 2 明鏡止水 9 行雲流水 9 行雲流水 8 天下無双 7 花鳥風月 0 百花繚乱 -------------------------- このほうほうだと、こんな風に表示されます。

  • レコードの書込み判断

    ファイルを読込み、読込まれたレコードの39桁目が0であれば出力という判断を下記のコーディングに追加したいのですが、どのように記述すればよいでしょうか? if(open(OUT,">$year$mon$mday$csv")){  for my $fname (sort @dirs){   if(open(IN,"$fname")){   my @lines = <IN>;   print OUT @lines;   close(IN);   }  }  close(OUT); }

  • 正規表現でURLだけを取り出したい

    正規表現でURLだけを取り出したいのですが、うまくできなくて困っています。 あああああ http://www.yahoo.co.jp abcdefg if ($_=~/(.*)http(.*)[  \n](.*)/){ print $2 } とやると http://www.yahoo.co.jp abcdefg となってしまいます。 http://www.yahoo.co.jp だけを取りたいのですが・・・ []のなかは 半角スペース、全角スペース、改行 です。

    • ベストアンサー
    • Perl
  • Pythonプログラミングでエラー

    Pythonのプログラムを教科書をみながら勉強しはじめました。 バージョンは3.0.1です。 下記の初歩的なプログラムで#の行でエラーがでて対応方法が わかりません。 アドバイスいただけませんでしょうか。 #! /python30/python # coding:shift_jis ''' 簡単な電卓です。 Usage: mycalc.py n (+-*/) m ''' import sys, operator OP={'+':operator.__add__,\ '-':operator.__sub__,\ '*':operator.__mul__,\ '/':operator.__truediv__,\ } def calc(ls): assert len(ls)==3 #ここでエラー try: op=OP(ls.pop(1)) # 真ん中の文字列をpop,数字のみ残る。 x,y=[float(u) for u in ls] # 残った文字列をfloatに変換 except: print('Err:数字 演算子(+-*/) 数字 の順に引数をセットしてください。') sys.exit() return op(x,y) if __name__=='__main__': print(calc(sys.argv[1:])) #ここでエラー (ここで質問するとTABのインデントがなくなってしまうようです。)

  • pythonのコードで原因不明のエラーが出ます。

    シーケンス型データに何かの値を掛けるよう命令した覚えはないのですが、can't multiply sequence by non-int of type 'float' というエラーが出ます。 以下は当該のコードです。 リストqueriesの中にある英文からランダムに値を出し、手で入力した回答in_ansの正誤に応じて次に出題する確率を制御するコードです。 import numpy as np import random true_ans=["those foods enable us to get nutrition even in developing countries", "there are vast numbers of starving children or breadwinners"] queries=["those foods enable us to get nutrition even [mask] developing countries", "there are vast numb[mask] of starving child[mask] or breadwinn[mask]"] for i in range(2): w=[] w=np.ones_like(true_ans) a_Q=random.choices(queries,k=1,weights=w) print(a_Q) idx=queries.index(a_Q) in_ans = input("input answear") if in_ans == true_ans[idx]: w[idx] -= 1 print(t) else: w[idx] += 2 print(f)