将字符串转换为小写字母并用下划线分隔

先看这样一张图片(来自amazon后台卖家账单截图,具体金额已脱敏)

最近一直在从事爬虫相关开发工作,这次爬的是amazon卖家后台的账单数据。在图上面可以看到有四个大项(Beginning balance、Orders、Refunds、Closing balance)以及多个可能重名的小项。 在存数据时,为了分辨出某个值是属于哪个具体项的,就需要把大项与小项的label进行拼接了。如Orders下的Product charges要转换为orders_product_charges。

拼接很简单,就是把空格替换成下划线,然后调用lower()函数转小写就可以了。如果仅仅是这样,我也不会记录这篇文章了。之所以记下来,是为了特殊情况的处理。在图中可以看到,有类似这种的特殊字符Other (shipping & gift wrap credits)、Previous statement's unavailable balance。这里我们需要将括号中的内容和'符号丢弃,用到了一个关键的东西,那就是正则。

  1. 用正则将括号里的东西丢掉,从Other (shipping & gift wrap credits)变成Other
words = re.findall('(.*)?\(', word)
if len(words) == 1:
    word = words[0]
  1. 使用sub()函数去掉非英文字符、非下划线的字符
word = re.sub('[^a-z_]', '', word)

整个转换就完成了,将来也许会加入更多的规则,但目前看已足够使用。毕竟平台界面以及反爬虫规则都是时时刻刻在变的,我们及时跟进就可以了。

本博客采用 知识共享署名-禁止演绎 4.0 国际许可协议 进行许可

本文标题:将字符串转换为小写字母并用下划线分隔

本文地址:https://dev-tang.com/post/2017/12/converts-normal-characters-to-underscore-separators-and-lowercase-letters.html

推荐阅读