2016-11-13 34 views
0

中读取文件中的字符串直至设置字符(例如,读取单词“hello world¬这是一个字符串”),对不起,如果我的英语已关闭,我正在制作在Python中的东西,需要帮助解决我遇到的问题。我所要解决的问题是我需要能够在txt文件中获取信息,直到¬等关键字符指示的一个点,然后需要能够在第一个¬后面的字符串的下一部分到接下来等等。这样做的原因是因为所有的字符串将是能够而且将会改变各种长度,所以如果我有串如何从python 3

“znPbB T7 <)\ oWk_feGTIT:7 {?.¬ZO9S9 $ v9vpd}ž #EMKC¬”

在记事本文件,我需要它出来作为

'znPbB T7 <)\ oWk_feGTIT:7 {'。

,当我想:第二个,它应该站出来为

'ZO9 S9 $ v9vpd} z#按EMKC?

+0

可能重复[如何逐行读取文件到Python列表中](http://stackoverflow.com/questions/3277503/how-to-read-a-file-line-by-line-到-A-列表与 - 蟒蛇) – jordiburgos

回答

0

我会用分裂:

s = 'znPbB t7<)!\oWk_feGTIT:7{.¬ZO9?S9$v9vpd}Z#EMKC¬' 
s.split('¬') 
# returns 
['znPbB t7<)!\\oWk_feGTIT:7{.', 'ZO9?S9$v9vpd}Z#EMKC', ''] 
0

一种解决方案是分割字符串。另一个是使用re模块。

import re 

text = 'znPbB t7<)!\oWk_feGTIT:7{.öZO9?S9$v9vpd}Z#EMKCöjndIJ%349HBhslö' 
regex_result = re.findall(r"(?!ö).*?(?=ö)", text) 
split_result = text.split("ö") 

两个结果之间的区别是,str.split包括一个空字符串,如果字符(在我的例子“O”)是最后一个:测试时我改变了¬字符到O。

split_result[:-1] == regex_result # <--- This is True 

正则表达式可以分为三部分。 (?!ö)是一个负面预测,从结果中排除“ö”。 .*?匹配任何东西。 (?=ö)是一个前瞻性的告诉我们,“ö”是必要的,但不包含在比赛中。