写程序用到的python知识

本文介绍了Python在处理字符串中的数字、比较字符串数字、处理字典写入txt时的编码问题、列表与csv/excel文件的读写,以及如何判断和合并重复数据。还涉及了程序运行时间的计算,并提供了相关资源链接。
摘要由CSDN通过智能技术生成

目录

  1. python如何在字符串中提取数字
  2. 数据类型为字符串的数字比较大小
  3. python将字典中的值写入到txt时,中文出现了\u等乱码现象?// 将字典写入txt文件中
  4. 将列表数据写入到txt、csv中
  5. 将dict数据写入到excel中
  6. 读取数据
  7. 如何判断5个表格中数据是否重复,如果重复就删除,没有重复的数据整合到一个表格中
  8. 怎么知道程序运行的时间

1.python如何在字符串中提取数字?

import re

words = '1.1万'
word1 = re.sub("\D", "", words)
print(word1)    # 11  str
word2 = re.sub("[^0-9.]", "", words)   #保留小数点
print(word2)         # 1.1  str
word3 = re.findall('\d+(?:\.\d+)?', words)
print(word3)    # ['1.1']   list
  1. 数据类型为字符串的数字比较大小
    两个字符串直接比较大小有时候会出现明显的错误情况,最简单的就是用eval()函数转换一下数据类型
    例如:
if '12.5' > '5':
    print('xx')
else:
    print('mm')      # mm
if eval('12.5') > eval('5'):
    print('xx')
else:
    print('mm')      # xx
  1. python将字典中的值写入到txt时,中文出现了\u等乱码现象?
    我发现我总是文件各种读入写出不熟,导致每次都要查博客。。。现在总结一下
    遇到上面这种情况,是因为用json.dumps()时,括号里没有设置ensure_ascii=False
    比如:
import json

content = {'bookname': '剑来', 'followers': '3202'}  
with open('learning.txt', 'a+', encoding='utf-8') as f:
    f.write(json.dumps(content, ensure_ascii=False) + '\n')   # {"bookname": "剑来", "followers": "3202"}
    f.write(str(content) + '\n')    # {'bookname': '剑来', 'followers': '3202'}
    f.write(json.dumps(content) + '\n')  # {"bookname": "\u5251\u6765", "followers": "3202"}
  1. 将列表数据写入到txt、csv中
import codecs
import csv

data = ['道爷不好惹', '123', '鬼仙之主', '456']
with open('learning.csv', 'w+', encoding='utf-8') as f:
    f.write(str(data))       # ['道爷不好惹', '123', '鬼仙之主', '456']

file_csv = codecs.open('learning.csv', 'w+', encoding='utf-8')
result = csv.writer(file_csv, delimiter= ' ', quotechar= ' ', quoting= csv.QUOTE_MINIMAL)
for i in data:
    result.writerow(i)
"""
道 爷 不 好 惹
1 2 3
鬼 仙 之 主
4 5 6
"""

# 将list写入txt
data = ['道爷不好惹', '123', '鬼仙之主', '456']
with open('learning.txt', 'w+',encoding='utf-8') as f:
    for i, item in enumerate(data):
        f.write(item + '\n')
"""
道爷不好惹
123
鬼仙之主
456
"""
import xlrd

workbook = xlrd.open_workbook('table.xlsx')
table = workbook.sheet_by_name('sheet1')
bn = table.col_values(0)
bookurl = table.col_values(1)

不知道为啥xlrd今天不能用了,查了网上说使用pip uninstall xlrd 之后 再pip install xlrd==1.2.0就可以了,但我仍然装不上,明天研究一下openpyxl这个包之后再更 = =

麻烦的是各种方法都可以用,所以经常搞混。可我只想知道一种最简单最通用的方法哎喂。

  1. 将dict数据写入到excel中
	booklist = {'日月风华':'xxx', '陆地键仙':'xxx', '剑来':'xxx'}
	key = list(booklist.keys())
	value = list(booklist.values())
    result_excel = pd.DataFrame()
    result_excel['书名'] = key
    result_excel['书籍链接'] = value
    result_excel.to_excel('booklist.xlsx')

在这里插入图片描述
6. 读取数据
为了避免麻烦,我一般用pd.read_csv(),pd.read_excel() 函数来读csv、excel数据,用

with open('filename.txt', encoding='utf-8') as f: 
	for line in f.readlines():

一行一行读文本数据,可能涉及到items = json.loads(line) 或者用到strip()、split()函数等

  1. 如何判断5个表格中数据是否重复,如果重复就删除,没有重复的数据整合到一个表格中?
    先用xlrd读取表格中的数据得到list,然后记录list中数值与数值的索引,将该数值和索引对应的其它数值放入到一个dict中,dict以某个数值(一般选易区分的)为key,其它为value,然后用dict.setdefault(),将不在dict中的加入进去即可。

Tips: python查找列表中某个元素的索引

bn_index = bn.index(bookname)

bn 表示一个list,bookname表示要查找的值,bn_index表示bookname的索引

  1. 怎么知道程序运行的时间
    在程序main函数下(程序运行开始前)用
import time
if __name__ == '__main__':
	start_time = time.time()
	i = 0
	while i < 10:
	(xxx...)
	i += 1
	end_time = time.time()
    print('{} run time:'.format(i), end_time - start_time)

最后,贴一个用openpyxl包读excel的博客,明天琢磨一下(资料侵删
如何用Python读写Excel文件?最便捷的3种方式

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值