我有一系列字符串,例如:(?<! # negative lookbehind
, # comma
)
,
(?= # positive lookahead
\s # whitespace
)
,"024764108"
,"002231531"
,它们恰好有9位数字。我想将"005231329"
添加到每组3位数。我想要的结果如下:
-
,"024-764-108"
,"002-231-531"
。
我如何向python解释我的想法?
答案 0 :(得分:3)
如果使用python 3.6你可以考虑'f strings',f string允许你在字符串中做一些处理。
f'{string[:3]}-{string[3:6]}-{string[6:]}'
另一种选择是将你的字符串分成三部分然后在数组上进行连接。
split_string = [string[i: i + 3] for i in range(0, len(string), 3)]
formated_number = '-'.join(split_string)
第一行创建一个包含长度为3的子字符串的数组,然后它连接该数组的元素,中间带有“ - ”字符。
答案 1 :(得分:2)
可能有更好的方法,但您可以使用[]
将字符串拆分为3个部分。
old_str = "024764108"
new_str = old_str[:3] + '-' + old_str[3:6] + '-' + old_str[6:]
答案 2 :(得分:2)
简易解决方案:
number = "024764108"
new_number = number[:3] + '-' + number[3:6]+ '-' + number[6:]
答案 3 :(得分:1)
使用字符串切片考虑此代码:将此str转换为格式的代码段为string[0:3] + "-" + string[3:6] + "-" + string[6:9]
这是您更新的方法和一些测试用例。此外,它只接受包含9位数字的输出。
def format_digitstring(string:str):
if len(string) != 9:
return None
return string[0:3] + "-" + string[3:6] + "-" + string[6:9]
s1 = "024764108"
s2 = "002231531"
s3 = "005231329"
s4 = "00112341"
print(format_digitstring(s1))
print(format_digitstring(s2))
print(format_digitstring(s3))
print(format_digitstring(s4))
输出:
024-764-108
002-231-531
005-231-329
None
答案 4 :(得分:0)
这也是:
import re
s='024764108'
print(('{}-'*2+'{}').format(*re.findall('(...)',s)))
或者如果你想在所有行上进行,你可以使用panda的应用功能。
答案 5 :(得分:0)
向前看是积极的,\ d {3}表示三位数后跟数字(?= \ d),&#39; - &#39;在三位数后添加(&#39; \ 1 - &#39;)。
import re
number="024764108"
re.sub(r'(\d{3})(?=\d)',r'\1-',number)