我正在努力想要一个想要放入python脚本的想法.我甚至不确定如何提出最合适的问题,因为我一直在网上冲浪试图找到我想要的东西而没有运气.
基本上,我有一个简单计算的脚本:
divider = int(math.ceil(df.scale / 3000))
Run Code Online (Sandbox Code Playgroud)
这是因为我希望'divider'返回值除以3000并且总是向上舍入.我想用这个值来帮我回信.
所以,它是这样的:
如果1返回,那么我希望a返回'A'如果2返回,那么我想创建'A','B'如果3返回,那么我想创建'A','B','C'等等上....
我的最终结果是,我想保存一些文件.'divider'将确定我要保存多少个文件,然后每个文件将以递归方式命名为其中的字母(即FileA,FileB,FileC ...)
好吧,我知道我的问题并不完全合适,但我正在努力解决这个问题,所以如果你需要一些清晰度,请告诉我.
我在python中创建了以下列表解析:
[int(a[0].internal_value).lower() if type(a[0].internal_value) in (str,unicode) and a[0].internal_value.isdigit() == True
else str(a[0].internal_value).lower() if type(a[0].internal_value) in (str,unicode)
else int(a[0].internal_value) if type(a[0].internal_value) in (float,int)
for a in ws.iter_rows() if a[0].internal_value <> None]
Run Code Online (Sandbox Code Playgroud)
我有问题试图构建最终的else,如果条件:
else int(a[0].internal_value) if type(a[0].internal_value) in (float,int)
Run Code Online (Sandbox Code Playgroud)
如果我在该行中使用if条件,则会得到无效的语法.
if type(a[0].internal_value) in (float,int)
Run Code Online (Sandbox Code Playgroud)
如果我删除if语句
else int(a[0].internal_value)
Run Code Online (Sandbox Code Playgroud)
然后似乎运行正常.我需要在那里有if语句.
给我其他的,如果条件是列表理解方式做更简单的if,else条件:
if i == x:
do something
elif i == y:
do something
elif i == z:
do something
Run Code Online (Sandbox Code Playgroud)
按照规则,你并不总是需要一个'else'来关闭一系列条件句.在我看来,我的代码想要理解中的最终"其他".我是否正确陈述,如果是这样,有没有办法构建最终的其他,如果在python列表理解而不是最终的其他?
我在表中有一个字段,其中包含以下格式表示的度数分钟秒的字符串值:
179-53-32
我想替换所有破折号并将其格式化为适当的格式:
179°53'32"
基本上用正确的字符(度,分,秒)替换破折号并在那里有空格.我正在考虑通过索引进行重新编译,但我认为它不起作用:
s.replace('-', '° ')[0]
s.replace('-', '\' ')[1]
Run Code Online (Sandbox Code Playgroud)
有没有办法完成我想做的事情?可能首先枚举字符串然后替换?
谢谢,迈克
我试图根据计数在for循环中动态创建变量.
我正在使用openpyxl模块迭代工作表.
value = ~sheet name after using a loop to iterate over sheet names~
wb = (path_to_workbook, use_iterators = True)
ws = wb.get_sheet_by_name(name = value)
for a,b,c,d in ws.iter_rows():
print a.internal_value
Run Code Online (Sandbox Code Playgroud)
问题是,for循环中的变量数量取决于每个工作表中有多少活动列从一个工作表更改为工作表.它会吐出错误:
"打开包装的价值太多了"
如果我没有正确数量的变量解压缩到.
我可以使用以下方法获取列数:
ws.get_highest_column()
Run Code Online (Sandbox Code Playgroud)
所以,不知怎的,我需要做一个:
for ~dynamically create variables by count of columns~ in ws.iter_rows():
print variable1.internal_value
Run Code Online (Sandbox Code Playgroud)
我看过一些使用exec的帖子,但我没有任何经验,我似乎总是读到它如何让你陷入麻烦.
我有 4 个 python 字典,其中每个键的值是另一个字典:
a={'a': {'e': 4}}
b={'b': {'f': 5}}
c={'c': {'g': 6}}
d={'d': {'h': 7}}
Run Code Online (Sandbox Code Playgroud)
我想将字典 a、b、c 和 d 合并在一起,这样我就有了一个最终的字典,如下所示:
{'a': {'e': 4}, 'b': {'f': 5}, 'c': {'g': 6}, 'd': {'h': 7}}
Run Code Online (Sandbox Code Playgroud)
其中父字典的顺序是我添加每个原始字典的顺序。
所以我创建了一个空字典并执行了以下操作:
x={} #create empty dictionary
x.update(a) #update with first dictionary
print x
x.update(b) #update with second dictionary
print x
x.update(c) #update with third dictionary
print x
x.update(d) #update with forth dictionary
print x
Run Code Online (Sandbox Code Playgroud)
结果是这样的:
{'a': {'e': 4}}
{'a': {'e': 4}, 'b': {'f': 5}}
{'a': {'e': …Run Code Online (Sandbox Code Playgroud) 我在python中编写一个脚本,用于验证父表中每个单元格的值,并与查找表中的值进行比较.
因此,在父表中,我有许多列,每列对应于应该在该特定列中的每个记录中的已知值的查找表.
当我从父表中读取值时,会有很多类型(即unicode字符串,整数,浮点数,日期等)
查找表具有相同的类型,但是当它是一个字符串时,它是一个简单的字符串,而不是一个unicode字符串,它强制我转换值以匹配.(即如果父表中单元格中的值是unicode字符串,那么我需要创建一个条件句来测试它是unicode然后转换为简单字符串
if isinstance(row.getValue(columnname), unicode):
x = str(row.getValue(columnname)
Run Code Online (Sandbox Code Playgroud)
我的问题是,将unicode字符串转换为简单字符串或反之亦然以匹配类型更好吗?为什么会更好?
如果它有帮助,我的父表全部都在访问,查找表都在excel中.我认为这不重要,但也许我错过了一些东西.
python ×6
dictionary ×1
excel ×1
if-statement ×1
indexing ×1
openpyxl ×1
replace ×1
unicode ×1