6

text_isbn大量の ISBN コードを含むテキスト ファイルがあります。それを解析して新しい行に各 ISBN 番号を含む新しいテキスト ファイルに書き込むスクリプトを作成したいと考えています。

これまでのところ、ISBN を見つけるための正規表現を書くことはできましたが、それ以上処理することはできませんでした。

import re
list = open("text_isbn", "r")
regex = re.compile('(?:[0-9]{3}-)?[0-9]{1,5}-[0-9]{1,7}-[0-9]{1,6}-[0-9]')

以下を使用しようとしましたが、エラーが発生しました(リストの形式が適切ではないと思います...)

parsed = regex.findall(list)

解析して新しいファイル (output.txt) に書き込む方法は?

本文のサンプルはこちらtext_isbn

Praxisguide Wissensmanagement - 978-3-540-46225-5
Programmiersprachen - 978-3-8274-2851-6
Effizient im Studium - 978-3-8348-8108-3
4

2 に答える 2

8

どうですか

import re

isbn = re.compile("(?:[0-9]{3}-)?[0-9]{1,5}-[0-9]{1,7}-[0-9]{1,6}-[0-9]")

matches = []

with open("text_isbn") as isbn_lines:
    for line in isbn_lines:
        matches.extend(isbn.findall(line))
于 2013-01-10T13:13:46.877 に答える
0

この正規表現を試してください(正規表現クックブックから):

import re
data = open("text_isbn", "r")
regex = "(?:ISBN(?:-1[03])?:? )?(?=[-0-9 ]{17}$|[-0-9X ]{13}$|[0-9X]{10}$)(?:97[89][- ]?)?[0-9]{1,5}[- ]?(?:[0-9]+[- ]?){2}[0-9X]$"

for l in data.readlines():
    match = re.search(regex, l)
    isbn = match.group()
    outfile.write('%s\n' % isbn)

あなたのサンプルデータでテストされました。各行に isbn 番号が 1 つだけ含まれていると仮定します。

于 2013-01-10T14:56:44.860 に答える