首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >将代码标记列表转换为有效的字符串代码

将代码标记列表转换为有效的字符串代码
EN

Stack Overflow用户
提问于 2021-07-02 03:29:59
回答 1查看 39关注 0票数 0

我已经编写了代码来将Python代码转换为计算BLEU score的列表

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import re

def tokenize_for_bleu_eval(code):
    code = re.sub(r'([^A-Za-z0-9_])', r' \1 ', code)
    code = re.sub(r'([a-z])([A-Z])', r'\1 \2', code)
    code = re.sub(r'\s+', ' ', code)
    code = code.replace('"', '`')
    code = code.replace('\'', '`')
    tokens = [t for t in code.split(' ') if t]

    return tokens

多亏了这段代码,我的代码struct.unpack('h', pS[0:2])才能正确地解析成列表['struct', '.', 'unpack', '(', 'h', ',', 'p', 'S', '[', '0', ':', '2', ']', ')']

最初,我认为我只需要使用' '.join(list_of_tokens),但它像这样杀死了我的变量名,并且我的代码无法执行。

我尝试使用正则表达式来粘贴一些变量名,但是我无法成功地反转我的函数tokenize_for_bleu_eval来找到最后的可执行代码。有没有人想到了,也许没有正则表达式,这在这里似乎太复杂了?

编辑:我们不能只是删除列表元素之间的所有空格,因为有像items = [item for item in container if item.attribute == value]这样的例子,没有空格的反向翻译的结果将是itemforiteminaifitem[0]==1,这是无效的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-07-02 09:36:55

我正在尝试使用此脚本合并令牌

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import re

def tokenize_for_bleu_eval(code):
    code = re.sub(r'([^A-Za-z0-9_])', r' \1 ', code)
    code = re.sub(r'([a-z])([A-Z])', r'\1 \2', code)
    code = re.sub(r'\s+', ' ', code)
    code = code.replace('"', '`')
    code = code.replace('\'', '`')
    tokens = [t for t in code.split(' ') if t]

    return tokens

def merge_tokens(tokens):
    code = ''.join(tokens)
    code = code.replace('`', "'")
    code = code.replace(',', ", ")

    return code

tokenize = tokenize_for_bleu_eval("struct.unpack('h', pS[0:2])")
print(tokenize)  # ['struct', '.', 'unpack', '(', '`', 'h', '`', ',', 'p', 'S', '[', '0', ':', '2', ']', ')']
merge_result = merge_tokens(tokenize)
print(merge_result)  # struct.unpack('h', pS[0:2])

编辑:

我发现了一个有趣的想法来进行标记化和合并。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import re

def tokenize_for_bleu_eval(code):
    tokens_list = []
    codes = code.split(' ')
    for i in range(len(codes)):
        code = codes[i]
        code = re.sub(r'([^A-Za-z0-9_])', r' \1 ', code)
        code = re.sub(r'([a-z])([A-Z])', r'\1 \2', code)
        code = re.sub(r'\s+', ' ', code)
        code = code.replace('"', '`')
        code = code.replace('\'', '`')
        tokens = [t for t in code.split(' ') if t]
        tokens_list.append(tokens)
        if i != len(codes) -1:
            tokens_list.append([' '])
    
    flatten_list = []

    for tokens in tokens_list:
        for token in tokens:
            flatten_list.append(token)

    return flatten_list

def merge_tokens(flatten_list):
    code = ''.join(flatten_list)
    code = code.replace('`', "'")

    return code

test1 ="struct.unpack('h', pS[0:2])"
test2 = "items = [item for item in container if item.attribute == value]"
tokenize = tokenize_for_bleu_eval(test1)
print(tokenize)  # ['struct', '.', 'unpack', '(', '`', 'h', '`', ',', ' ', 'p', 'S', '[', '0', ':', '2', ']', ')']
merge_result = merge_tokens(tokenize)
print(merge_result)  # struct.unpack('h', pS[0:2])

tokenize = tokenize_for_bleu_eval(test2)
print(tokenize)  # ['items', ' ', '=', ' ', '[', 'item', ' ', 'for', ' ', 'item', ' ', 'in', ' ', 'container', ' ', 'if', ' ', 'item', '.', 'attribute', ' ', '=', '=', ' ', 'value', ']']
merge_result = merge_tokens(tokenize)
print(merge_result)  # items = [item for item in container if item.attribute == value]

此脚本还将记住输入中的每个空格

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68219274

复制
相关文章
app store connect
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/11/01
9830
app store connect
使用 App Store Connect API v2.3 管理 App Store 新定价机制
我们在上一篇文章 《App Store 新定价机制》讲解了苹果新定价升级,本文接着来讲解一下新 App Store Connect API v2.3 的使用示例。
37手游iOS技术运营团队
2023/04/10
4K0
使用 App Store Connect API v2.3 管理 App Store 新定价机制
使用 App Store Connect API 批量创建内购商品
我们去年开源 AppleParty(苹果派) 用于批量应用内购商品的创建和更新的方案,具体的技术方案是使用 XML Feed 格式来处理。而今年苹果在 WWDC22 宣布,2022 年 11 月开始,不再允许使用 XML 方式上传元数据和内购商品。
37手游iOS技术运营团队
2022/12/30
5K1
使用 App Store Connect API 批量创建内购商品
Windows系统中苹果ipa上传到App Store Connect
2、登录Appuploader软件,点击右上角,选择设置,把上传专用密码复制上去,同时勾选上保存密码,点击Save保存,然后再回去提交ipa上传就可以正常上传了。
iOS Magician
2023/03/22
7260
Windows系统中苹果ipa上传到App Store Connect
Windows系统中苹果ipa上传到App Store Connect
1、进入https://appleid.apple.com/zh_CN,登录苹果开发者账号生成上传专用密码,登录进去找到安全-APP专用密码生成密码,输入密码标签创建 弹出APP专用密码,复制即可使用 2、登录Appuploader软件,点击右上角,选择设置,把上传专用密码复制上去,同时勾选上保存密码,点击Save保存,然后再回去提交ipa上传就可以正常上传了。 ​
iOS程序应用
2023/04/13
3760
WWDC21 - App Store Server API 实践总结
大家好,我们在去年在 WWDC21 后 6 月 17 日发表了总结文章《苹果iOS内购三步曲 - WWDC21》。当时只是根据苹果的演讲内容进行了梳理,当时的很多接口和功能并没有上线,比如根据玩家的发票订单号查询用户的苹果收据,查询历史订单接口等,当时文章并没有深入的分析,而如今都 2022 年了,苹果 App Store Server API 已经上线,所以,今天我们一起来了解一下,相关 API 的具体使用实践吧~
37手游iOS技术运营团队
2022/01/25
11.8K1
WWDC21 - App Store Server API 实践总结
如何解决App Store Connect中的“90704”图标错误的问题
在iOS应用开发中,我们需要将应用程序打包成ipa包并上传到App Store Connect
iOS Magician
2023/05/12
1.2K0
2020.6.17 关于 App Store Connect 改版后的一些问题
自2020年6月16日起,必须提供精确套装 ID,才能将 App 上传至 App Store。创建 App 记录时,通配符套装 ID 不再可用。要为 App 注册新的精确套装 ID,请访问“证书、标识符和描述文件”。
HelloWorld杰少
2022/08/04
3600
2020.6.17 关于 App Store Connect 改版后的一些问题
谈一谈 IPA 上传到 App Store Connect 的几种方法
关于上传 ipa 包到 App Store Connect 的方法,相信有 iOS 开发经验的同学,一定知道完成 App 开发后,一般都是用 Xcode 的 Archive 打包后上传到苹果后台。所以,这个就是今天要写的水文?显示不是吧!答案肯定不是啊,本文将给大家一个相对全面介绍。苹果开发的知识点非常多,官方文档也很多,能够学好学完,不一定人人能够做到。在我的理解,iOS进阶,不是说你必须掌握很高深的技术,而是了解全面的知识,能够做出不一样的产品、体验,这个才是优秀的开发者!
iOS Magician
2023/03/22
3.4K0
如何解决App Store Connect中的“90704”图标错误的问题
在iOS应用开发中,我们需要将应用程序打包成ipa包并上传到App Store Connect
iOS程序应用
2023/05/12
1K0
谈一谈 IPA 上传到 App Store Connect 的几种方法
当然,Xcode 这种方式,是需要有源代码情况下,才能上传。所以,就会有没有源代码的情况,怎么上传的情况啦!​
iOS程序应用
2022/12/09
1.3K0
Js给数组对象新增属性
<script> var list = [{ 'name': 'aa' }, { 'name': 'aa' },] list.forEach((item) => { ite
明知山
2020/09/03
8.8K0
App上架App Store
你用公司的账号申请个证书,然后打包的时候什么.p12文件秘钥啥的都填上打完包,就直接丢审核就好了呀,有啥要求的直接公司账号扣了,与你无瓜
达达前端
2020/09/16
1.7K0
App上架App Store
iOS APP上架App Store其中一个步骤就是要把ipa文件上传到App Store
下面进行步骤介绍! 利用Appuploader这个软件,可以在Windows、Linux或Mac系统中申请ios和上传IPA到App Store Connect。
iOS Magician
2023/03/22
5830
iOS APP上架App Store其中一个步骤就是要把ipa文件上传到App Store
上传Api成功但在苹果开发者网站App Store Connect中未显示构建版本的解决方案​
ERROR ITMS-90189: "Redundant Binary Upload. You've already uploaded a build with build number '1' for version number '1.0'. Make sure you increment the build string before you upload your app to App Store Connect. Learn more in Xcode Help​
iOS程序应用
2023/03/10
1.9K0
react基础--2
react-redux需要配合 redux使用,react-redux可实现 redux与react的连接
切图仔
2022/09/08
1.2K0
iOS APP上架App Store其中一个步骤就是要把ipa文件上传到App Store!
利用Appuploader这个软件,可以在Windows、Linux或Mac系统中申请ios和上传IPA到App Store Connect。
爱学iOS的小麦子
2023/05/09
5340
iOS APP上架App Store其中一个步骤就是要把ipa文件上传到App Store!
Kafka核心API——Connect API
Kafka Connect是一个用于将数据流输入和输出Kafka的框架。Confluent平台附带了几个内置connector,可以使用这些connector进行关系数据库或HDFS等常用系统到Kafka的数据传输,也是用来构建ETL的一种方案。
端碗吹水
2020/09/23
8.6K1
Kafka核心API——Connect API
React技巧之将useState作为对象数组
原文链接:https://bobbyhadz.com/blog/react-typescript-usestate-empty-object
chuckQu
2022/08/19
2.7K0
React技巧之将useState作为对象数组
MySQL Document Store 混合使用关系型数据与非关系型数据
Document Store 文档存储,又称为面向文档的数据库。在这篇文章里将简要介绍一下什么是文档存储?它与传统的关系型数据库有什么区别?以及MySQL是如何实现文档存储的。
MySQLSE
2020/09/28
1.5K0
MySQL Document Store 混合使用关系型数据与非关系型数据

相似问题

App Store Connect API请求销售报告

123

在App购买金额中- App Store Connect API

119

正在为App Store Connect API生成令牌

31

App Store Connect - In-App购买-等待加载

113

App Store Connect API上次上载的内部版本和编号

268
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文