python之隐形错误

本文旨在总结python编程过程中碰到的一些隐形的问题,即能编译通过,但是不易察觉的问题。

1. 指针无处不在

不要在循环遍历中进行列表删除操作,这样会碰到地址索引更新失败的情况,容易让人联想到了C、C++里的指针问题。

# 删除列表中的数字字符串
import re

list = ['Yes', ',', 'software', '-12', '12.2', '1', '-2', '+9527', '81', '9', '78.99', '-52.68']

# 错误的做法:直接循环遍历的时候删除元素,会导致索引地址失效,删除不彻底
i = 0
for word in list:
    if re.match(r'[-+]?\d+',word):
        i +=1
        print('第 %d 次: ' % i)
        list.remove(word)
        print(word)

# 正确的做法:记录需要删除的元素,另外新建列表,针对记录的元素进行删除
temp = []
for word in list:
    if re.match(r'[-+]?\d+.\d+$|^[-+]?\d+$|\d+$', word):
        temp.append(word)
        print(word)

for i in temp:
    list.remove(i)

print(list)

指针无处不在上面算是Python 的隐式解指针行为的一个小例子。Python 变量更类似于(某种残缺的)指针变量,而不是引用变量。

深入理解编译器的运行原理,对与帮与理解程序有很大帮助。

2. pandas:写入excel跟写入csv的区别

import pandas as pd

output_message = ['less academic would be good.", 'Test', '=> to match with the method `terminate_instance()`.', "Test2.", 'Test3.']

output_file = pd.DataFrame({'message': output_message})
output_file.to_csv(r'D:\Test.csv', index=False)
# output_file.to_excel(r'D:\Test.xlsx', index=False)
# 这里发现有些带符号的字符串写入excel文件时会失败,写入空值;而写入csv则没有这个问题

这里发现有些带符号的字符串写入excel文件时会失败,写入空值;而写入csv则没有这个问题。很明显,写入excel碰到的问题更多,因此,个人建议写入文件时,优先选择csv。

3. 

 

不定期更新...

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值