Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将一列转换为数字_Python_Openpyxl - Fatal编程技术网

Python 将一列转换为数字

Python 将一列转换为数字,python,openpyxl,Python,Openpyxl,我有一个我正在构建的程序,它要求一个csv文件并将其保存在excel中。我有一个列是currency-$10.00-我可以用我的代码将其他单元格转换为数字,但我假设因为在数字之前有一个“$”它不会转换。我怎样才能为这一专栏解决这个问题-谢谢 def open_csv(): from tkinter import Tk from tkinter.filedialog import askopenfilename import csv from openpyxl import Workbook fr

我有一个我正在构建的程序,它要求一个csv文件并将其保存在excel中。我有一个列是currency-$10.00-我可以用我的代码将其他单元格转换为数字,但我假设因为在数字之前有一个“$”它不会转换。我怎样才能为这一专栏解决这个问题-谢谢

def open_csv():
from tkinter import Tk
from tkinter.filedialog import askopenfilename
import csv
from openpyxl import Workbook
from openpyxl.cell import get_column_letter

Tk().withdraw()
filename = askopenfilename()

open_rawdata = open(filename, 'r')

csv.register_dialect('commas', delimiter=',')

reader = csv.reader(open_rawdata, dialect='commas')

wb = Workbook()
dest_xls = r'C:\Users\sparkis\Desktop\WeeklyReport.xlsx'

ws = wb.worksheets[0]
ws.title = "TEST TITLE"

for row_index, row in enumerate(reader):
    for column_index, cell in enumerate(row):
        column_letter = get_column_letter((column_index + 1))
        s = cell
        try:
            s = float(s)
        except ValueError:
            pass

        ws.cell('%s%s'%(column_letter, (row_index + 1))).value = s



wb.save(filename = dest_xls)

在CSV文件中,所有的值都是字符串。openpyxl工作簿有一个数字格式,但是您可以自己更好地管理转换,在本例中,还可以添加适当的数字格式

假设输入的第四列需要转换为数字。类似这样的东西应该会奏效

for idx, row in enumerate(reader, 1):
    row[3] = row[3][1:] # strip $
    ws.append(row)
    ws.cell(idx, 4).number_format = "$"