【发布时间】:2020-10-14 18:42:21
【问题描述】:
我有几个“[一个或多个单词] [数字] [一个或多个单词]”形式的字符串,我想将它们分成两个字符串和数字。例如,如果字符串是:
"A sample string 20 something"
我要获取:
str1 = "A sample string"
numb = 20
str2 = 'something'
我(几乎)使用以下代码实现了我的目标:
for s in row.split():
if s.isdigit():
quants = s
temp = row.split("{}".format(quants))
str1 = temp[0].strip()
str2 = temp[1].strip()
这适用于大多数情况。但是,有两个我无法处理的异常:
-
如果数字在括号内,我希望它被计为一个字符串。例如:
“一些文字(仅作为 1 个示例)还有 2 个单词”
我想要 str1 = "Some text (just as 1 example)"
-
有时数字以特殊字符(Unicode?)、¼、½ 和 ¾ 表示。我该如何解释这些?
我怀疑答案是使用正则表达式而不是分隔符,但我还不能真正掌握如何使用它们。
【问题讨论】:
-
一些备注:1)
split()不会帮你;您的解决方案仅适用于个位数 2)将括号中的数字视为文本的要求需要不同的方法。 3)使用正确的编码语句,您可以在代码中包含与您的问题相同的分数。 -
1) 实际上,我的解决方案也适用于超过 1 位的数字,只要它们之间没有空格,这满足我必须处理的字符串的特征。 2)什么方法? 3)编码语句是什么意思?这些不仅仅是分数,而是 unicode(?) 字符(即 ¼ 不是 1/4)
-
对不起,我已经编辑了答案以更好地满足您的需求,除了特殊字符,您的意思是
½= 1/2?