使用包含小写,camelcase,数字的正则表达式拆分字符串

时间:2016-02-06 21:46:33

标签: python regex

我正在使用python中的tweepy来获取Twitter趋势,并且我能够找到世界前50大趋势,所以对于样本我得到这样的结果

#BrazilianFansAreTheBest, #PSYPagtuklas, Federer, Corcuera, Ouvindo ANTI,
艦これ改, 영혼의 나이, #TodoDiaéDiaDe, #TronoChicas, #이사람은_분위기상_군주_장수_책사, 
#OTWOLKnowYourLimits, #BaeIn3Words, #NoEntiendoPorque 

(请忽略非英语单词)

所以在这里我需要解析每个标签并将它们转换成正确的英文单词。我还检查了人们如何编写标签并找到以下方式 -

 #thisisawesome
 #ThisIsAwesome
 #thisIsAwesome 
 #ThisIsAWESOME
 #ThisISAwesome
 #ThisisAwesome123 

(有些时候主题标签也有数字)

因此,请记住所有这些,我想如果我能够在字符串下方拆分,那么上述所有案例都将被涵盖。

string ="pleaseHelpMeSPLITThisString8989"

Result = please, Help, Me, SPLIT, This, String, 8989

我使用re.sub尝试了一些东西,但它没有给我预期的结果。

1 个答案:

答案 0 :(得分:0)

正则表达式是用于该工作的错误工具。您需要一个明确定义的模式才能编写好的正则表达式,在这种情况下,您没有一个。假设您可以拥有Capitalized WordsCAPITAL WORDSlowercase words和数字,则没有真正的方法可以查看THATSand并区分THATS and或{ THAT Sand

自然语言方法将是一个更好的解决方案,但同样,它不可避免地会遇到与上述相同的问题-您如何区分两种(或更多种)完全有效的方法来解析相同的输入?现在,您需要获取一些普通的句子,为您打算解析的每种语言构建一个句子,并且 still 还需要担心正确解析twitter经常出现的毫无意义的标签。

问题就变成了,为什么根本需要分割字符串?我建议您找到一种忽略此要求的方法,因为与开发此特定解决方案相比,几乎可以肯定,解决问题要容易得多。