如何跳过没有内容的值?
Posted
技术标签:
【中文标题】如何跳过没有内容的值?【英文标题】:How do I skip values with no content? 【发布时间】:2021-11-23 21:48:53 【问题描述】:如何将带有内容的值存储到字符串中?
我知道必须有一种更清洁、更有效的方法来做到这一点,但目前我正在努力寻找一种方法。我将不胜感激,因为我一定错过了一些东西。我在这方面花了很长时间。
我的目标是: 检查 sheet.values 是否有内容 -> 如果有,则存储为字符串
检查 sheet.values 是否有内容 -> 如果没有,则跳过或不创建字符串
这样做的优先级是 sheet.values 可以包含需要识别的未确定数量的内容。如 sheet.values 最多填写 [9] 一个实例,但填写到 [6] 另一个实例。所以它需要考虑到这一点。
当我稍后在代码中使用 makedirs() 时,sheet.values 也必须作为字符串返回(它有点暴躁,如果你能提供帮助,这也需要工作)
我知道 for 循环应该能够帮助我,但只是还没有找到合适的循环。
import os
import pandas as pd
from openpyxl import load_workbook
from pandas.core.indexes.base import Index
os. chdir("C:\\Users\\NAME\\desktop")
workbook = pd.ExcelFile('Example.xlsx')
sheet = workbook.parse('Sheet1')
print (sheet.values[0])
os.getcwd()
path = os.getcwd()
for input in sheet.values:
if any(sheet.values):
if input == None:
break
else:
if any(sheet.values):
sheet.values == input
set
str1 = '1'.join(sheet.values[0])
str2 = '2'.join(sheet.values[1])
str3 = '3'.join(sheet.values[2])
str4 = '4'.join(sheet.values[3])
str5 = '5'.join(sheet.values[4])
str6 = '6'.join(sheet.values[5])
str7 = '7'.join(sheet.values[6])
str8 = '8'.join(sheet.values[7])
str9 = '9'.join(sheet.values[8])
str10 = '10'.join(sheet.values[9])
str11 = '11'.join(sheet.values[10])
str12 = '12'.join(sheet.values[11])
str13 = '13'.join(sheet.values[12])
str14 = '14'.join(sheet.values[13])
str15 = '15'.join(sheet.values[14])
str16 = '16'.join(sheet.values[15])
str17 = '17'.join(sheet.values[16])
str18 = '18'.join(sheet.values[17])
str19 = '19'.join(sheet.values[18])
str20 = '20'.join(sheet.values[19])
str21 = '21'.join(sheet.values[20])
########################ONE################################################
try:
if not os.path.exists(str1):
os.makedirs(str1)
except OSError:
print ("Creation of the directory %s failed" % str1)
else:
print ("Successfully created the directory %s " % str1)
########################TWO################################################
try:
if not os.path.exists(str2):
os.makedirs(str2)
except OSError:
print ("Creation of the directory %s failed" % str2)
else:
print ("Successfully created the directory %s " % str2)
########################THREE################################################
try:
if not os.path.exists(str3):
os.makedirs(str3)
except OSError:
print ("Creation of the directory %s failed" % str3)
else:
print ("Successfully created the directory %s " % str3)
########################FOUR################################################
try:
if not os.path.exists(str4):
os.makedirs(str4)
except OSError:
print ("Creation of the directory %s failed" % str4)
else:
print ("Successfully created the directory %s " % str4)
Note: The makedirs() code runs down till to the full amount of strings
Excel 文档显示如下:enter image description here
此脚本导致:index 9 is out of bounds for axis 0 with size 9
这是真实预期的,因为 sheet.values 仅此金额。
谁能帮帮我?我知道它很乱
更新代码
import os
import pandas as pd
from openpyxl import load_workbook
from pandas.core.indexes.base import Index
os. chdir("C:\\Users\\NAME\\desktop")
workbook = pd.ExcelFile('Example.xlsx')
sheet = workbook.parse('Sheet1')
print (sheet.values[0])
os.getcwd()
path = os.getcwd()
print ("The current working Directory is %s" % path)
for col in sheet.values:
for row in range(len(col)):
dir_name = str(row + 1) + col[row]
try:
os.makedirs(dir_name, exist_ok=True)
except OSError:
print ("Creation of the directory %s failed" % dir_name)
else:
print ("Successfully created the directory %s " % dir_name)
【问题讨论】:
缩进与str9上的不同。 您对最好的方法有什么建议?因为我知道它需要改变很多。也会做@j1-lee,对此感到抱歉 啊@randomer64 道歉。将其放入堆栈溢出是一个错误。该脚本实际上没有这个问题 【参考方案1】:您似乎正在尝试读取 csv 的第一列,并根据该值创建目录。
with open(mypath+file) as file_name:
file_read = csv.reader(file_name)
file = list(file_read)
for col in file:
for row in range(len(col)):
dir_name = str(row + 1) + col[row]
try:
# https://docs.python.org/3/library/os.html#os.makedirs
os.makedirs(dir_name, exist_ok=True)
except OSError:
print ("Creation of the directory %s failed" % str1)
else:
print ("Successfully created the directory %s " % str1)
【讨论】:
以上是关于如何跳过没有内容的值?的主要内容,如果未能解决你的问题,请参考以下文章