在python字符串中插入这些破折号的最快方法?

Lit*_*les 11 python string string-formatting

所以我知道Python字符串是不可变的,但我有一个字符串:

c['date'] = "20110104"
Run Code Online (Sandbox Code Playgroud)

我想转换成哪个

c['date'] = "2011-01-04"
Run Code Online (Sandbox Code Playgroud)

我的代码:

c['date'] = c['date'][0:4] + "-" + c['date'][4:6] + "-" + c['date'][6:]
Run Code Online (Sandbox Code Playgroud)

似乎有点费解,不是吗?最好将它保存为单独的变量,然后再做同样的事情吗?或者基本上没有区别?

Ble*_*der 18

你可以用.join()它来清理一下:

d = c['date']
'-'.join([d[:4], d[4:6], d[6:]])
Run Code Online (Sandbox Code Playgroud)

  • 如果性能是OP意味着"更快",我发现`' - '.join((d [:4],d [4:6],d [6:]))`略快(即元组而不是列表). (3认同)

GWW*_*GWW 6

最好使用字符串格式而不是字符串连接

c['date'] = '{}-{}-{}'.format(c['date'][0:4], c['date'][4:6], c['date'][6:])
Run Code Online (Sandbox Code Playgroud)

字符串连接通常较慢,因为如上所述,字符串是不可变的.


Col*_*nic 5

日期是Python中的第一类对象,具有丰富的操作界面.该库是日期时间.

> import datetime
> datetime.datetime.strptime('20110503','%Y%m%d').date().isoformat()
'2011-05-03'
Run Code Online (Sandbox Code Playgroud)

不要重新发明轮子!

  • 因此: `c['date'] = pd.to_datetime(c['date'], format = '%Y%m%d')` 。请参阅:/sf/ask/1873434111/ (2认同)