首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将文本字符串拆分为int和text变量

将文本字符串拆分为int和text变量
EN

Stack Overflow用户
提问于 2019-10-30 17:16:44
回答 2查看 31关注 0票数 0

我编写了一个脚本,将文本文件中的信息传输到sql数据库中,但我遇到了一个问题。我的脚本像这样拆分文本:

代码语言:javascript
复制
for file in os.listdir("C:\\alt\\her"):
    if file:
        Array= file.split("_")

这会将字符串分割成一个数组,像这样的['Fieldbus', 'EtherNetIP', '848', '3217.txt'],然后我用我得到的信息做一些变量,如下所示:

代码语言:javascript
复制
Namearray = (Array[0]+"_"+Array[1])
JinkinsBuild = Array[2]
TestJob = Array[3].split(".txt")

所以我在这里得到的输出是:

代码语言:javascript
复制
>>>Namearray = Fieldbus_EtherNetIP
>>>JinkinsBuild = 719
>>>TestJob = 1926

这很完美,但是我的文件名看起来像这样:

Fieldbus_EtherNetIP_719_1926SZTEST_gep40_smoketest_xconnect_298_1943Fieldbus_Modbus_TCP_821_1702

我如何改进我的脚本,让它获取整个文本,在最后一个_之后,获取第一个数字,存储该数字,然后存储下一个数字,如下所示:

代码语言:javascript
复制
>>>Namearray = SZTEST_gep40_smoketest_xconnect
>>>JinkinsBuild = 298
>>>TestJob = 1943

#Or like this

>>>Namearray = Fieldbus_Modbus_TCP
>>>JinkinsBuild = 298
>>>TestJob = 1943
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-10-30 17:24:13

您可以使用rsplit()

代码语言:javascript
复制
files = ['SZTEST_gep40_smoketest_xconnect_298_1943',
         'Fieldbus_EtherNetIP_719_1926',
         'Fieldbus_Modbus_TCP_821_1702']

for file in files:
    print(file.rsplit('_', 2))

输出

代码语言:javascript
复制
['SZTEST_gep40_smoketest_xconnect', '298', '1943']
['Fieldbus_EtherNetIP', '719', '1926']
['Fieldbus_Modbus_TCP', '821', '1702']
票数 0
EN

Stack Overflow用户

发布于 2019-10-30 17:24:59

这是regex的工作。

代码语言:javascript
复制
names = ['Fieldbus_EtherNetIP_719_1926', 'SZTEST_gep40_smoketest_xconnect_298_1943', 'Fieldbus_Modbus_TCP_821_1702']
for name in names:
    match = re.match(r'(.*)_(\d+)_(\d+)$', name)
    if match:
        print(match.groups())
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58621991

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档