import re file=open('express.txt',encoding="utf8") a=[] contents=file.readlines() contents=contents[1:-1] for liu in contents: liu=liu.strip('\n') liu=liu.strip('\t') liu=liu.rstrip(',') a.append(liu) file.close() b=[] for i in range(0,460): for item in a[i]: if item ==',': c=a[i].index(item) c=c+3 elif item =='省': d=a[i].index(item) d=d+1 break elif item =='市': d=a[i].index(item) d=d+1 break elif item =='区': d=a[i].index(item) d=d+1 break 代码优化
时间: 2024-02-14 08:14:04 浏览: 50
python: line=f.readlines()消除line中\n的方法
可以进行以下优化:
1. 在读取文件时,使用 with open() as file 语句,可以省略关闭文件的操作;
2. 将 strip('\n') 和 strip('\t') 合并为 strip(),可以同时去除换行符和制表符;
3. 在遍历字符串时,可以使用 enumerate() 函数获取字符的索引,避免使用 index() 函数;
4. 可以将 '省'、'市' 和 '区' 放入一个列表中,使用 in 判断是否包含其中一个字符,避免多次判断相同的条件。
优化后的代码如下所示:
```python
import re
province_list = ['省', '市', '区']
with open('express.txt', encoding='utf8') as file:
contents = file.readlines()[1:-1]
a = [liu.strip().rstrip(',') for liu in contents]
b = []
for i in range(0, 460):
for j, item in enumerate(a[i]):
if item == ',':
c = j + 3
elif item in province_list:
d = j + 1
break
b.append(a[i][d:])
print(b)
```
其中,使用了列表推导式将读取的内容进行了去除换行符和制表符的操作。在遍历字符串时,使用了 enumerate() 函数获取字符的索引,避免使用 index() 函数。判断省、市、区时,使用了 in 判断是否包含其中一个字符,避免多次判断相同的条件,提高了代码效率。
阅读全文