如何跳过没有内容的值?

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)

【讨论】:

以上是关于如何跳过没有内容的值?的主要内容,如果未能解决你的问题,请参考以下文章

Python sklearn OneHotEncoder:如何跳过列表中不存在的值

坚持Doctrine2时如何跳过列?

Spring Batch 中的跳过是如何实现的?

Pandas-如何添加条目跳过行的列?

使用向量化时如何跳过前n行

如何通过跳过换行符将文本区域内容替换为“*”