python读写word、excel、csv、json⽂件python读写word⽂档
(include wps)
将word⽂档转换成txt⽂档
def doc2txt():
'''
将doc⽂档转换成txt⽂档
:return:
'''
from win32com import client
INPUT_DIR = r'C:\Users\pi\Desktop\New folder'
OUTPUT_DIR = r'C:\Users\pi\Desktop\txts'
word = client.Dispatch('Word.Application')
for doc_name in listdir(INPUT_DIR):
print(doc_name)
doc_full_name = path.join(INPUT_DIR, doc_name)
doc = word.Documents.Open(doc_full_name)
doc.SaveAs(path.join(OUTPUT_DIR, doc_name.split('.')[0]), 4)
doc.Close()
word.Quit()
wdFormatDocument                    =  0
wdFormatDocument97                  =  0
wdFormatDocumentDefault            = 16
wdFormatDOSText                    =  4
wdFormatDOSTextLineBreaks          =  5
wdFormatEncodedText                =  7
wdFormatFilteredHTML                = 10
wdFormatFlatXML                    = 19
wdFormatFlatXMLMacroEnabled        = 20
wdFormatFlatXMLTemplate            = 21
wdFormatFlatXMLTemplateMacroEnabled = 22
wdFormatHTML                        =  8
wdFormatPDF                        = 17
wdFormatRTF                        =  6
wdFormatTemplate                    =  1
wdFormatTemplate97                  =  1
wdFormatText                        =  2
wdFormatTextLineBreaks              =  3
wdFormatUnicodeText                =  7
wdFormatWebArchive                  =  9
wdFormatXML                        = 11
wdFormatXMLDocument                = 12
wdFormatXMLDocumentMacroEnabled    = 13
wdFormatXMLTemplate                = 14
wdFormatXMLTemplateMacroEnabled    = 15
wdFormatXPS                        = 18
照着字⾯意思应该能对应到相应的⽂件格式,如果你是office2003可能⽀持不了这么多格式。word⽂件转html有两种格式可选wdFormatHTML、wdFormatFilteredHTML(对应数字8、10),区别是如果是wdFormatHTML格式的话,word⽂件⾥⾯的公式等ole对象将会存储成wmf格式,⽽选⽤wdFormatFilteredHTML的话公式图⽚将存储为gif格式,⽽且⽬测可以看出⽤wdFormatFilteredHTML⽣成的HTML明显⽐wdFormatHTML要⼲净许多。
当然你也可以⽤任意⼀种语⾔通过com来调⽤office API,⽐如PHP.
[ ]
[ ]
[ ]
python读写excel⽂档
实例
将H列如下修改⼀下
当然这个可以拷贝到notepad++中,使⽤替换(\d+\*\d+).*为\1就ok了
Python中读取微软excel的模块
openpyxl
The recommended package for reading and writing Excel 2010 files (ie: .xlsx)
xlrd
This package is for reading data and formatting information from older Excel files (ie: .xls)
安装
pip install openpyxl
基本使⽤代码实现
def openpyxl_excel(FILENAME=r'C:\Users\pi\Desktop\1.xlsx'):
'''
只能操作office 2010+版本⽂件
'''
import openpyxl as xl
wb = xl.load_workbook(FILENAME)  # 读取excel⽂件
ws = wb.get_sheet_by__sheet_names()[0])  # 选择某个sheet
pro_spec = [i[0].value for i in ws['H1:H' + str(ws.max_row)]]  # 选择某⼀列的所有数据
#  对选中的数据进⾏操作
pro_spec = [item[0:item.rfind('*')] if item is not None unt('*') == 2 else item for item in pro_spec]
for index, i in enumerate(ws['H1:H' + str(ws.max_row)]):
i[0].value = pro_spec[index]  # 将数据修改到excel⽂件单元格中
wb.save(FILENAME)  # 保存⽂件修改
Python XLRD Error : formula/tFunc unknown FuncID:186
到formula.py⽂件(D:\python3.4.2\Lib\site-packages\xlrd\formula.py)186⾏左右,在⽂字184和⽂字189中间加插⼊⼀⾏ 186: ('HACKED', 1, 1, 0x02, 1, 'V', 'V')
[]
[官⽹主页]
[]
微软官⽅Excel管理Python模块:Pyvot
安装⽅式
前提是预先安装有和Office 2010。
安装命令是:pip install pyvot
微软官⽅Excel管理Python模块
导⼊⽅式
import xl
把Python内容导⼊到Excel中
>>> xl.Workbook() # 创建空的Excel表单,状态为active
>>> a = range(1,10) #  ⼀个Python列表
>>> a[1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> xl.view(a) # 将Python列表展⽰在Excel中
Python列表被拷贝进了Excel。
Excel内容转成Python对象
从Excel中获取数据需要xl.Range对象,这个对象代表要操作的单元格。xl.view函数返回选择的存储数据的单元格的范围。
>>> r = xl.view(range(1,10))
>>> r<ColumnVector range object for $A$2:$A$1048576 (visible only)
>>>> r.get()[1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0]
>>> sum(r) # ranges are iterable45.0
需要注意的是,view函数实际上选中了整个A列,但是假设我们只需要⾥⾯有⽤的数据。
现在我们可以修改Excel中的数据,然后重新获取数据回来。例如我们⼿动在Excel中删除⼀些⾏,把Excel中的数据改为这样:>>> r.get() # get updated values[1.0, 20.0, 8.0, 9.0]
当前的选择范围仍旧是⼀个Range对象,这允许我们在Excel中筛选我们感兴趣的数据。
>>> xl.selected_range().get()8.0
使⽤Range对象的注意事项:
它排除了表头⾏(get("ColumnName").get()不包含"ColumnName")
它只从被使⽤了的范围⾥⾯进⾏选择。相对应的,原⽣的Excel COM API有⼀个⾮常令⼈沮丧的问题,就是如果你选择⼀列,它返回⼀百万个空的单元格给你。
Workbook.Range⽅法相⽐之下只处理A1这种风格的引⽤,和命名范围。
代码实现
FILENAME = r'C:\Users\pi\Desktop\5-3⼊库.XlS'
def xl_excel():
'''
微软官⽅xl模块
'''
import xl
book = xl.Workbook(FILENAME)  # 打开⽂件
pro_spec = ("H:H").get()  # 获得某⼀列数据
# 对数据进⾏操作
pro_spec = [item[0:item.rfind('*')] if item is not None unt('*') == 2 else item for item in pro_spec][1:]
xl.view(pro_spec, ("I:I"))  # 将数据写⼊对应列
[ ]
python怎么读入excel[]
不过lz推荐⽤pandas处理excel数据,毕竟datafram数据结构就和excel表⼀样。
python读写csv⽂档
python读取csv⽂件
with open('stock.tsv') as f:
f_tsv = ader(f, delimiter='\t')
for row in f_tsv:
# Process row
python写csv⽂件
with open(csv_filename, 'w', encoding='utf-8') as csv_file:
csv_w = csv.writer(csv_file)
for line_no in line_no_list:
csv_w.writerow(predict_label_list[label_start_no:label_start_no + line_no])
出现的问题
Python中通过csv的writerow输出的内容有多余的空⾏
也就是csv.writer().writerow()保存的csv⽂件,打开时每⾏后都多⼀⾏空⾏
解决1:
with open(csv_filename, 'w', encoding='utf-8', newline='') as csv_file:
csv_w = csv.writer(csv_file, delimiter=',', lineterminator='\n')
csv⽅⾔参数中有⼀个  lineterminator,他的作⽤是定义csv结束⼀⾏的符号, 默认值是 '\r\n',如果有需要,也可以尝试修改
解决2:
在open()内增加⼀个参数newline='' 即可,但是在windows下,换⾏还是两个\r\n⽽不是只有\n。
对newline参数的解释:参数newline是⽤来控制⽂本模式之下,⼀⾏的结束字符。可以是None,’’,\n,\r,\r\n等。当在读取模式下,如果新⾏符为None,那么就作为通⽤换⾏符模式⼯作,意思就是说当遇到\n,\r或\r\n都可以作为换⾏标识,并且统⼀转换为\n作为⽂本输⼊的换⾏符。当设置为空’’时,也是通⽤换⾏符模式⼯作,但不作转换为\n,输⼊什么样的,就保持原样全输⼊。当设置为其它相应字符时,就会判断到相应的字符作为换⾏符,并保持原样输⼊到⽂本。当在输出模式时,如果新⾏符为None,那么所有输出⽂本都是采⽤\n作为换⾏符。如果设置为’’或者\n时,不作任何的替换动作。如果是其它字符,会在字符后⾯添加\n作为换⾏符。
[ ]
解决3:
Python中的csv的writer,打开⽂件的时候,要通过binary模式去打开,即带b的,⽐如wb,ab+等
⽽不能通过⽂本模式,即不带b的⽅式,w,w+,a+等,否则,会导致使⽤writerow写内容到csv中时,产⽣对于的CR,导致多余的空⾏。
[ ]
[ ]
python读写json⽂档
[]
from:
ref:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。