求帮助python,帮帮忙

img

img


我只会用spilt变成这样,后面就不会了,有没有大佬帮帮忙。

他的信息缺失是特定信息缺失么,如果是的话可以从后往前匹配,比如如果价格是不会缺失的,就从价格开始向前寻找这种思路
如果是随机缺失就要对分割后的每一项进行判定了,比如信息中含有'[\d]+元'就说明他是价格,含有出版社就说明是出版社一项这样的,匹配不到就设置为随机缺失

你题目的解答代码如下:(如有帮助,望采纳!谢谢! 点击我这个回答右上方的【采纳】按钮)

s1 = "[法] 圣埃克苏佩里 / 马振聘 / 人民文学出版社 / 2003-8 / 22.00元"
s2 = "(丹麦) 安徒生 / 叶君健 / 人民文学出版社 / 1997-08 / 25.00元"
s3 = "[德国] 格林兄弟 / 魏以新 / 人民文学出版社 / 1994-11 / 21.45元"
s4 = "温酒 / 湖南文艺出版社 / 2017-12 / 42.00元"

li = []
for s in [s1,s2,s3,s4]:
    a = [x.strip() for x in s.split('/')]
    a[0:1] = a[0].split(" ")
    a = ['信息缺失']*(6-len(a)) + a
    li.append(a)

print(li)

img

思路对,没问题;


你目前是遇到什么问题了

可以用正则表达式提取,可参考以下代码:

import re

s1 = "[法]圣埃克苏佩里/马振聘/人民文学出版社/2003-8/22.00元"
s2 = "(丹麦)安徒生/叶君健/人民文学出版社/1997-08/25.00元"
s3 = "[德国]格林兄弟/魏以新/人民文学出版社/1994-11/21.45元"
s4 = "温酒/湖南文艺出版社/2017-12/42.00元"
l = []
def test(list):
    for i in list:
        li = []
        # 国家
        countries = re.findall('(?<=\(|\[)[\u4e00-\u9fa5]+(?=\)|\])',i)
        if len(countries) > 0:
            li.append("[%s]"%countries[0])
        else:
            li.append('信息缺失')
        # 作者
        author = re.findall('(?<=\)|\])[\u4e00-\u9fa5]+(?=/)',i)
        judge(author,li)
        # 译者
        translator = re.findall('(?:^|(?<=/))[\u4e00-\u9fa5]+(?=/)', i)
        result = all([word in text for word in ['出版社'] for text in translator])
        if result == False:
            for j in translator:
                if '出版社' not in j:
                    li.append(j)
        else:
            li.append('信息缺失')

        # # 出版社
        Press = re.findall('[\u4e00-\u9fa5]+出版社',i)
        judge(Press,li)
        # 出版日期
        date = re.findall('\d{4}-\d{1,2}',i)
        judge(date, li)
        # 价格
        price = re.findall('\d+(?:.\d+)?元',i)
        judge(price, li)

        l.append(li)
    return l

def judge(character,li):
    if len(character) > 0:
        li.append(character[0])
    else:
        li.append('信息缺失')
endlist = test([s1,s2,s3,s4])
print(endlist)


img