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 数字

于 2013-01-10T14:56:44.860 回答