V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
justincnn
V2EX  ›  问与答

*求助* Python 代码求助,谢谢大家

  •  
  •   justincnn · 2020-11-17 19:13:19 +08:00 · 875 次点击
    这是一个创建于 1247 天前的主题,其中的信息可能已经有所发展或是发生改变。

    文科生自学 python 两个月,还是看不懂代码,不知道怎么添加想要的内容:

    网上抄了一段代码,想在运行之后,直接输出英文和中文内容, 第 43 行的 print 只有原文件的英文内容,如果同时 print 出中文,需要如何修改,谢谢大家,

    文科生的极限实在没法,来这里求帮忙

    def translateBaidu(content, fromLang='en', toLang='zh'): salt = str(random.randint(32768, 65536)) sign = appid + content + salt + secretKey sign = hashlib.md5(sign.encode("utf-8")).hexdigest()

    try:
        paramas = {
            'appid': appid,
            'q': content,
            'from': fromLang,
            'to': toLang,
            'salt': salt,
            'sign': sign
        }
        response = requests.get(apiurl, paramas)
        jsonResponse = response.json()  # 得到返回的结果,结果为 json 格式
        dst: str = str(jsonResponse["trans_result"]
                  [0]["dst"])  # 取得翻译后的文本结果
        return dst
    except Exception as e:
        print(e)
    

    def excelTrans(srcFilename=r'/Users/justin/Desktop/FANYI.xlsx', desFilename=r'/Users/justin/Desktop/FANYI1.xlsx', srcSheet='Sheet1', srcColumn=1, srcRowBegin=1, srcRowEnd=402, desColumn=1, desSheet='中文品名'): wb = openpyxl.load_workbook(srcFilename) ws = wb[srcSheet] wb2 = Workbook() ws2 = wb2.create_sheet(title=desSheet)

    for i in range(srcRowBegin, srcRowEnd, 1):
        result = ws.cell(row=i, column=srcColumn).value
        if not (result is None):
            ws2.cell(row=i-srcRowBegin+1,
                     column=desColumn).value = translateBaidu(result)
        print(result)
    wb2.save(desFilename)
    

    if name == 'main': print('translate begin...') excelTrans() print('ending...')

    8 条回复    2020-11-17 20:13:06 +08:00
    justincnn
        1
    justincnn  
    OP
       2020-11-17 19:14:00 +08:00
    print(result) 之后只有原文件的英文,没有中文,这个怎么修改啊,
    Vibra
        2
    Vibra  
       2020-11-17 19:17:13 +08:00 via iPhone
    建议 markdown 再写一遍。
    Wolfsin
        3
    Wolfsin  
       2020-11-17 19:20:56 +08:00
    emmm,建议你用 markdown 修饰一下格式,这代码看着太上头了
    用法如下
    https://www.jianshu.com/p/65ab196bef04
    另外盲猜一下,可能是 api 调用出现了问题
    justincnn
        4
    justincnn  
    OP
       2020-11-17 19:23:49 +08:00
    @Wolfsin

    def translateBaidu(content, fromLang='en', toLang='zh'):
    salt = str(random.randint(32768, 65536))
    sign = appid + content + salt + secretKey
    sign = hashlib.md5(sign.encode("utf-8")).hexdigest()

    try:
    paramas = {
    'appid': appid,
    'q': content,
    'from': fromLang,
    'to': toLang,
    'salt': salt,
    'sign': sign
    }
    response = requests.get(apiurl, paramas)
    jsonResponse = response.json() # 得到返回的结果,结果为 json 格式
    dst: str = str(jsonResponse["trans_result"]
    [0]["dst"]) # 取得翻译后的文本结果
    return dst
    except Exception as e:
    print(e)


    def excelTrans(srcFilename=r'/Users/justin/Desktop/FANYI.xlsx', desFilename=r'/Users/justin/Desktop/FANYI1.xlsx',
    srcSheet='Sheet1', srcColumn=1, srcRowBegin=1, srcRowEnd=2,
    desColumn=1, desSheet='中文品名'):
    wb = openpyxl.load_workbook(srcFilename)
    ws = wb[srcSheet]
    wb2 = Workbook()
    ws2 = wb2.create_sheet(title=desSheet)

    for i in range(srcRowBegin, srcRowEnd, 1):
    result = ws.cell(row=i, column=srcColumn).value
    if not (result is None):
    ws2.cell(row=i-srcRowBegin+1,
    column=desColumn).value = translateBaidu(result)
    print(result+"translate is done")

    wb2.save(desFilename)


    if __name__ == '__main__':
    print('translate begin...')
    excelTrans()
    print('ending...')
    kermitlee
        5
    kermitlee  
       2020-11-17 19:24:35 +08:00
    这应该是调用了百度翻译的接口,看代码你的返回结果应该是存在了 /Users/justin/Desktop/FANYI1.xlsx 这份文件里,如果你需要打印翻译的结果的话,去看这行代码 translateBaidu(result) 的返回结果,翻译结果应该就是在这里。
    justincnn
        6
    justincnn  
    OP
       2020-11-17 19:34:04 +08:00
    @kermitlee 嗯嗯,但是不知道如何写 print 呢,可以帮忙下么?谢谢啊
    Wolfsin
        7
    Wolfsin  
       2020-11-17 19:36:23 +08:00
    我也觉得结果应该在 translateBaidu(result),这个函数的返回值里面,你应该 print(translateBaidu(result)),或者 print(column)看看
    kermitlee
        8
    kermitlee  
       2020-11-17 20:13:06 +08:00
    @justincnn 这你要把调用的接口 api 文档给找来,不然我也只能瞎猜。试试上面老哥的方法咯
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5235 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 01:20 · PVG 09:20 · LAX 18:20 · JFK 21:20
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.