- 此问题在此处已有答案**:
How do the .strip/.rstrip/.lstrip string methods work in Python?(4个答案)
三年前关闭了。
我正在努力完成 * 用Python自动化枯燥的工作 *。我刚刚完成了这个项目(用Openpyxl从工作表中提取数据并将其放入CSV文件)。唯一意想不到的行为是,我的文件名并不完全按照我所期望的方式出现。电子表格文件名是作者作为示例文件提供的。它们采用"spreadsheet-aiderxlsx"的形式。而不是返回我所期望的文件名,strip()去掉前导的"s"。
这不是什么大事,但我很好奇为什么会发生这种事,我还没有弄清楚。
预期行为:spreadsheet-A.xlsx
变为spreadsheet-A.csv
实际行为:spreadsheet-A.xlsx
变为preadsheet-A.csv
我猜问题出在第20和21行,关于strip,有一些我不知道的东西。
#!/usr/bin/python
# excelToCSV.py - Converts all excel files in a directory to CSV, one file
# per sheet
import openpyxl
from openpyxl.utils import get_column_letter
import csv
import os
for excelFile in os.listdir('.'):
#Skip non-xlsx files, load the workbook object.
if excelFile.endswith('.xlsx'):
wbA = openpyxl.load_workbook(excelFile)
#Loop through each sheet in the workbook
for sheet in wbA.worksheets:
sheetName = sheet.title
sheetA = wbA.get_sheet_by_name(sheetName)
# Create the CSV filename from the excel filename and sheet title
excelFileStripped = excelFile.strip('.xlsx')
csvFilename = excelFileStripped + '.csv'
# Create the csv.writer object for this csv file
csvFile = open(csvFilename, 'w', newline='')
csvWriter = csv.writer(csvFile)
# Loop through every row in the sheet
maxRow = sheetA.max_row
maxCol = sheetA.max_column
for rowNum in range(1, maxRow + 1):
rowData = []
# Loop through each cell in the row
for colNum in range(1, maxCol + 1):
# Append each cell's data to rowData
x = get_column_letter(colNum)
coordinate = str(x) + str(rowNum)
cellA = sheetA[coordinate]
#cellValue = cellA.value
rowData.append(cellA.value)
# Write the rowData list to the csv file
csvWriter.writerow(rowData)
csvFile.close()
else:
continue
2条答案
按热度按时间wfypjpf41#
正如注解中提到的,
strip
实际上接受单个字符(长度为1的字符串)的可迭代对象,并从字符串的开头和结尾删除其中任何一个字符的所有示例(这里是docs)。虽然您 * 可以 * 使用
rstrip
,但我建议使用os
中专门用于处理路径的函数,例如:输出:
将其应用到代码中,您可能会得到:
6jjcrrmo2#
另一种摆脱结尾的方法可以是:
这将删除结束部分并添加结束变量。