我在弄清楚如何在文本文件中拆分字符串并将字符串分成单独的文件时遇到了一些麻烦
在文本文件中,我有以下内容:
package:/system/app/CustomLocale/CustomLocale.apk=com.android.customlocale2
package:/system/app/Gallery2/Gallery2.apk=com.android.gallery3d
package:/system/app/Calendar/Calendar.apk=com.android.calendar
我有以下代码:
import os
os.system("adb shell pm list packages -f > apps.txt")
f = open('apps.txt',"r")
lines = f.readlines()
for line in lines:
for word in line.split():
#print(word)
if word.startswith('.apk'):
print(word)
现在我明白了如何将每一行单独拆分并将它们传输到一个文件中但是我想实现一种方法来拆分字符串的第一部分,即“package:/ system / app / CustomLocale / CustomLocale”第二部分是“.apk = com.android.calendar”。我将如何开始实现这一点。任何帮助将不胜感激。
答案 0 :(得分:1)
正常情况下,正则表达式是你最好的朋友。对于这种特殊情况,请使用str.split([sep[, maxsplit]])参数。
line.split('.', 1)
['package:/system/app/CustomLocale/CustomLocale','apk=com.android.customlocale2']
line.split('.apk=', 1)
['package:/system/app/CustomLocale/CustomLocale', 'com.android.customlocale2']
通过这种方式,您可以根据需要拆分整个字符串,将拆分限制为您想要制作的多个断点,然后根据需要使用它。
答案 1 :(得分:0)
首先,我认为这就是您所需要的:In Python, how do I split a string and keep the separators?
而且,对于这种情况,
import re
f = open('apps.txt',"r")
lines = f.readlines()
for line in lines:
ret = re.split('(\.apk)', line)
print ret[0]
print ret[1]+ret[2]
结果是:
package:/system/app/CustomLocale/CustomLocale
.apk=com.android.customlocale2
package:/system/app/Gallery2/Gallery2
.apk=com.android.gallery3d
package:/system/app/Calendar/Calendar
.apk=com.android.calendar
答案 2 :(得分:0)
这是另一种解决方案 输出写入out1.txt(.apk之前的字符串)和out2.txt(之后包括.apk)
import os
out1 = open('out1.txt', 'w')
out2 = open('out2.txt', 'w')
f = open('sample.txt', 'r')
lines = f.readlines()
pat='.apk'
for line in lines:
line=line.rstrip()
x=line.split(pat,1)
out1.write(x[0])
out1.write('\n')
out2.write(pat)
out2.write(x[1])
out2.write('\n')
out1.close()
out2.close()
f.close()