我正在寻找格式化的字节字符串文字.具体来说,相当于
name = "Hello"
bytes(f"Some format string {name}")
Run Code Online (Sandbox Code Playgroud)
可能是类似的东西fb"Some format string {name}".
这样的事情存在吗?
我最近一直在学习python 3,我无法得到任何涉及字符串插值(格式化)的例子.
In [1]: state = "Washington"
In [2]: state
Out[2]: 'Washington'
In [3]: my_message = f"I live in {state}"
File "<ipython-input-3-d004dd9e0255>", line 1
my_message = f"I live in {state}"
^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)
我认为我的机器默认为python 2,但快速检查显示:
Python 3.5.2 (default, Nov 17 2016, 17:05:23)
Type "copyright", "credits" or "license" for more information.
IPython 5.2.2 -- An enhanced Interactive Python.
Run Code Online (Sandbox Code Playgroud)
我在Ubuntu 16.04:
python3 --version
Python 3.5.2
Run Code Online (Sandbox Code Playgroud)
我只是忽略了基本语法?我在同学的几台计算机上运行相同的命令,似乎执行得很好.
我正在尝试编写一个bash脚本,在我的实时站点的数据库上执行mysqldump,然后添加并将转储提交到git存储库.这是我到目前为止(存储在一个由crontab条目调用的.sh文件中):
/usr/bin/mysqldump --skip-comments --skip-dump-date -u [user] -p[pass] database | gzip > /var/www/site/backup/database.sql.gz
cd var/www/site/backup && git add *
cd var/www/site/backup && git commit -m 'Database $(date +%a %H:%M %h %d %Y)'
Run Code Online (Sandbox Code Playgroud)
我的crontab条目如下所示:
0,20,40 8-22 * * * /var/www/site/backup/script.sh
Run Code Online (Sandbox Code Playgroud)
我可以看到这个脚本会转储数据库,但不会将文件添加或提交给git.有什么东西我错过了吗?
编辑=================================
我做了以下更改,提交工作:
cd /var/www/site/backup && /usr/bin/git add *
cd /var/www/site/backup && /usr/bin/git commit -m 'Database $(date +%a %H:%M %h %d %Y)'
Run Code Online (Sandbox Code Playgroud)
但是,日期不会计算.
编辑=================================
最新修订,包括(大部分)建议
/usr/bin/mysqldump --skip-comments --skip-dump-date -u [user] -p[pass] database > /var/www/site/backup/database.sql
cd var/www/site/backup
/usr/bin/git add *
/usr/bin/git commit -m …Run Code Online (Sandbox Code Playgroud) 我想就用一些其他文本替换字符串的子串的最佳方法得到一些意见.这是一个例子:
我有一个字符串,a,可能是"你好我的名字是$ name".我还有另一个字符串b,我想在其子字符串'$ name'的位置插入字符串a.
我认为如果以某种方式指示可替换变量将是最简单的.我使用了一个美元符号,但它可以是花括号之间的字符串或任何你认为最好用的字符串.
解决方案: 以下是我决定这样做的方法:
from string import Template
message = 'You replied to $percentageReplied of your message. ' +
'You earned $moneyMade.'
template = Template(message)
print template.safe_substitute(
percentageReplied = '15%',
moneyMade = '$20')
Run Code Online (Sandbox Code Playgroud) 在Ruby中,我可以做到这一点.
aaa = "AAA"
bbb = "BBB #{aaa}"
puts(bbb)
> "BBB AAA"
Run Code Online (Sandbox Code Playgroud)
这种语法的重点是消除重复,并使其感觉像一个shell脚本 - 非常适合繁重的字符串操作.
Rust支持这个吗?或者有计划支持这个?或者有一些可以模仿的功能?
我刚刚在C#6.0中查看了新的字符串插值功能(有关详细信息,请参阅Roslyn的语言功能页面).使用当前语法(预计会改变),你可以做这样的事情(例子来自我刚才写的博客文章):
var dob2 = "Customer \{customer.IdNo} was born on \{customer.DateOfBirth:yyyyMdd}";
Run Code Online (Sandbox Code Playgroud)
但是,我似乎无法在格式化部分中包含短划线,例如:
var dob2 = "Customer \{customer.IdNo} was born on \{customer.DateOfBirth:yyyy-M-dd}";
Run Code Online (Sandbox Code Playgroud)
如果我这样做,我会收到错误:
错误CS1056意外字符' - 'StringInterpolation Program.cs 21
有什么方法可以让破折号在格式化部分工作吗?我知道我可以使用string.Format(),但我想看看它是否可以用字符串插值完成,就像练习一样.
鉴于:
dict = {"path": "/var/blah"}
curr = "1.1"
prev = "1.0"
Run Code Online (Sandbox Code Playgroud)
插入字符串以生成以下内容的最佳/最短方法是什么:
路径:/ var/blah curr:1.1上一篇:1.0
我知道这有效:
str = "path: %(path)s curr: %(curr)s prev: %(prev)s" % {"path": dict["path"],"curr": curr, "prev": prev}
Run Code Online (Sandbox Code Playgroud)
但我希望有一个更短的方式,例如:
str = "path: %(path)s curr: %s prev: %s" % (dict, curr, prev)
Run Code Online (Sandbox Code Playgroud)
如果这看起来像是一个过于迂腐的问题,我道歉.
所以这是我的问题.
我想检索存储在模型中的字符串,并在运行时使用rails应用程序中的变量更改其中的一部分.这是一个例子:
我有一个Message模型,我用它来存储几个独特的消息.所以不同的用户有相同的消息,但我希望能够在消息的中间显示他们的名字,例如,
"Hi #{user.name}, ...."
Run Code Online (Sandbox Code Playgroud)
我试图在数据库中存储它,但它在视图中显示之前被转义,或者在存储在数据库中时通过rails控制台进行插值.
提前致谢.
谁能帮我这个?
必需输出:" Todo job for admin "
class Program
{
static void Main(string[] args)
{
Console.WriteLine(ReplaceMacro("{job.Name} job for admin", new Job { Id = 1, Name = "Todo", Description="Nothing" }));
Console.ReadLine();
}
static string ReplaceMacro(string value, Job job)
{
return value; //Output should be "Todo job for admin"
}
}
class Job
{
public int Id { get; set; }
public string Name { get; set; }
public string Description { get; set; }
}
Run Code Online (Sandbox Code Playgroud) 这有效
(x => s"$x")
Run Code Online (Sandbox Code Playgroud)
但是这个
(s"${_}")
Run Code Online (Sandbox Code Playgroud)
给
[error] ...: unbound placeholder parameter
[error] (s"${_}")
Run Code Online (Sandbox Code Playgroud)
这只是因为该(s"$_")构造遭受漏洞抽象?
此外: (s"$_")输出完全不同:
[error] ...: invalid string interpolation: `$$', `$'ident or `$'BlockExpr expected
[error] (s"$_")
[error] ^
[error] ...: unclosed string literal
[error] (s"$_")
Run Code Online (Sandbox Code Playgroud)