如何在python中从字符串中读取定义的值,就像在C中使用scan一样

2024-09-27 19:26:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个字符串,它的格式如下str=“R%dC%d”例如str=R150C123,我想将数值保存在变量中例如在C语言中这将如下所示:

int c,r;
sscanf(Str,"R%dC%d",&r,&c);

在python中,我是这样做的

c = int(str[str.find("C") + 1:])
r = int(str[:str.find("C")])

在python中有没有其他类似于我在C中所做的方法呢

因为我在python中的方式需要花费大量的时间来执行

另一种字符串格式的另一个示例是:Str=“%[A-Z]%d”,例如Str=ABCD1293

我想保存两个值,第一个是数组或字符串,第二个是数字

在C中,我是这样做的:

int r;
char CC[2000];
sscanf(s,"%[A-Z]%d",CC,&r)

在Python中,如下所示:

        for j in x:
            if j.isdigit():              
                r = x[x.find(j):]
                CC= x[:x.find(j)]
                break

我不认为这是用python解决这类任务的优雅方法。 你能帮帮我吗


Tags: 方法字符串示例格式方式时间findint
2条回答

就像Seb说的,regex

import re

regex = r"R(\d+)C(\d+)"

test_str = "R150C123"

match_res = re.fullmatch(regex, test_str)

num_1, num_2 = match_res.groups()
num_1 = int(num_1)
num_2 = int(num_2)

你也可以用regex的一行代码来实现这一点:

import re
s = 'R150C123'

r,c = list(map(int,re.findall('\d+',s)))

re.findall函数创建一个字符串中嵌入的所有数字的列表 map(int,…)函数将每个匹配的数字转换为一个int finally list将int作为列表返回,允许r&;c将在一项任务中定义

相关问题 更多 >

    热门问题