关于使用以下模式是否有任何缺点,警告或不良做法警告?
def buildString(user, name = 'john', age=22):
userId = user.getUserId()
return "Name: {name}, age: {age}, userid:{userId}".format(**locals())
Run Code Online (Sandbox Code Playgroud)
我有一个非常重复的字符串生成代码来编写并且很想使用它,但是关于使用的东西locals()让我感到不舒服.这有意外行为的危险吗?
编辑:上下文
我发现自己经常写下这样的东西:
"{name} {age} {userId} {etc}...".format(name=name, age=age, userId=userId, etc=etc)
Run Code Online (Sandbox Code Playgroud) 首先,我尝试过这篇文章(其中包括):Python中的货币格式.它对我的变量没有影响.我最好的猜测是因为我使用的是Python 3,而且是Python 2的代码.(除非我忽略了一些东西,因为我是Python的新手).
我想将一个浮点数(如1234.5)转换为String,例如"$ 1,234.50".我该怎么做呢?
为了以防万一,这里是我编译的代码,但不影响我的变量:
money = float(1234.5)
locale.setlocale(locale.LC_ALL, '')
locale.currency(money, grouping=True)
Run Code Online (Sandbox Code Playgroud)
也不成功:
money = float(1234.5)
print(money) #output is 1234.5
'${:,.2f}'.format(money)
print(money) #output is 1234.5
Run Code Online (Sandbox Code Playgroud) 有没有更好的方法在正数上打印数字的+号?
integer1 = 10
integer2 = 5
sign = ''
total = integer1-integer2
if total > 0: sign = '+'
print 'Total:'+sign+str(total)
Run Code Online (Sandbox Code Playgroud)
0应该返回0而不是+.
我可以将一个字节转换为十六进制数字,如下所示:
myByte.ToString("X")
Run Code Online (Sandbox Code Playgroud)
但如果小于0x10,它只有一位数.我需要一个领先的零.是否有一个格式字符串,可以在一次调用中执行此操作ToString?
我想根据一些布尔变量在不同的语言中显示是/否.
是否有一种通用的方法根据传递给它的语言环境对其进行格式化?
如果没有,那么格式化布尔值的标准方法是什么boolVar ? Resources.Yes : Resources.No.
我猜这boolVar.ToString(IFormatProvider)涉及到了.
我的假设是否正确?
可以String.Format()在VB6中实现,至少是一个足够接近的版本,在用'VB6'进行编程时可能会有用吗?
关于VB6字符串操作性能的良好资源:http://www.aivosto.com/vbtips/stringopt2.html
在一个相关的不,我也想出了几个字符串比较函数,在CodeReview.SE上找到它们
这些函数对于提高VB6的可读性非常有用,特别是如果你最近被.net代码宠坏了,突然被要求潜入VB6代码库......享受!
我在这里查看了各种文档和类似的问题,但似乎无法找到特定的解决方案.如果我遗漏了任何明显或重复这个问题的道歉!
作为一些背景信息,我使用Chart.js插件实现了4个图形,并使用PHP从数据库传递了所需的数据.这一切都正常工作,很好.
我的问题是我需要将工具提示中的数据显示为格式化数据.与%数字一样.例如,我的数据库中的一个数据是-0.17222.我把它格式化为一个百分比显示在我的表中,一切都很好.但是,在设置chart.js条形图的数据时,数据显然缺少此格式并显示为-0.17222,这是我不想要的.
对不起,我想张贴一张照片,但我的声誉太垃圾了!
我从数据库中获取数据,然后设置到我的表中:
var kpiRex = new Handsontable(example1, {
data: getRexData(),
Run Code Online (Sandbox Code Playgroud)
然后我在图表部分中提供这样的数据:
data: kpiRex.getDataAtRow(3)
Run Code Online (Sandbox Code Playgroud)
任何帮助都会很棒!我已经被困在这几个小时了,这可能是我非常简单的事情.
javascript code-formatting string-formatting number-formatting chart.js
为什么这行代码
<TextBlock Text="{Binding Net, StringFormat=c}"/>
Run Code Online (Sandbox Code Playgroud)
当我的所有区域设置都设置为UK时,将结果输出为$ xx.xx.我希望它输出为£xx.xx.有任何想法吗?我尝试过stringformat的不同变体,包括StringFormat = {} {0:C},但仍然得到相同的结果.
谢谢你的期待.
我想使用StringFormat做这样的事情:
<Label x:Name="myLabel">
<Label.Content>
<Multibinding StringFormat="{}{0} - {1}">
<Binding Path="Lib1" />
<Binding Path="Lib2" />
</MultiBinding>
</Label.Content>
</Label>
Run Code Online (Sandbox Code Playgroud)
但是,它不起作用,我得到了这个错误:
MultiBinding失败,因为它没有有效的Converter.MultiBindingExpression:目标元素是'Label'(Name ='myLabel'); target属性是'Content'(类型'Object')
有没有办法使这个代码工作?
感谢David Beazley的推文,我最近发现新的Python 3.6 f字符串也可以嵌套:
>>> price = 478.23
>>> f"{f'${price:0.2f}':*>20s}"
'*************$478.23'
Run Code Online (Sandbox Code Playgroud)
要么:
>>> x = 42
>>> f'''-{f"""*{f"+{f'.{x}.'}+"}*"""}-'''
'-*+.42.+*-'
Run Code Online (Sandbox Code Playgroud)
虽然我很惊讶这是可能的,但我很遗憾这是多么实际,何时嵌套f字符串是有用的?这可以涵盖哪些用例?
注意:PEP本身没有提到嵌套f字符串,但是有一个特定的测试用例.
python ×4
c# ×3
currency ×2
python-3.x ×2
.net ×1
binding ×1
chart.js ×1
coding-style ×1
f-string ×1
formatting ×1
javascript ×1
locals ×1
multibinding ×1
python-3.6 ×1
regional ×1
string ×1
vb6 ×1
vba ×1
wpf ×1
xaml ×1