我有一个字符串。例如:
str= '\n 4 420 700 – 6 219 000 \n '
或
'\n 4\xa0420\xa0700 – 6\xa0219\xa0000\xa0 \n'
在这种情况下,我想得到号码:4420700
。但任何数字都可以存在。例如,它将是3 333 999 233
。
我曾尝试过这个解决方案:
>>> import re
>>> re.sub(r'\D','',str)
'4420700621900016'
你能帮帮我吗?
答案 0 :(得分:0)
拆分和替换。
>>> st = '\n 4 420 700 – 6 219 000 \n '
>>> re.sub(r'\D', '',st.split('–')[0])
'4420700'
或
st.split('–')[0].strip().replace(' ', '')
答案 1 :(得分:0)
看起来您想从字符串中删除所有空格,然后解析所有数字的最长初始前缀,如果存在非数字(例如连字符)则停止。这是我的代码:
s = (... your input string ...)
import re
s = re.sub(r"\s", "", s) # Remove all whitespace
s = re.sub(r"\D.*", "", s) # Remove everything starting at a non-digit
n = int(s) # Parse the number (optional)
顺便说一句,不要为变量str
命名,因为它会与内置类型str
混淆。