有没有办法逃避单引号?
下列:
str := "I'm Bob, and I'm 25."
str = strings.Replace(str, "'", "\'", -1)
Run Code Online (Sandbox Code Playgroud)
给出错误:未知的转义序列:'
我想成为
"I\'m Bob, and I\'m 25."
Run Code Online (Sandbox Code Playgroud) 我有一堆我要解析的CSV文件 - 问题是有一半的引号用作引号,而主要字段中有逗号.它们实际上不是CSV,但它们确实具有可识别的固定数量的字段.方言= csv."excel"设置完美地适用于文件中没有额外的"and,字段内的字符".
此数据已旧/不受支持.我想把一些生命投入其中.
例如
"AAAAA
AAAA
AAAA
AAAA","AAAAAAAA
AAAAAA
AAAAA "AAAAAA" AAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAA, AAAAA
AAAAAAAAA AAAAA AAAAAAAAAA
AAAAA, "AAAAA", AAAAAAAAA
AAAAAAAA AAAAAAAA
AAAAAAA
"
Run Code Online (Sandbox Code Playgroud)
这会使文件解析器跳闸,并引发错误_csv.Error: newline inside string
.我通过从第二个字段中删除引号来解决这个问题,并且csv.reader模块解析文件OK.
有些领域是多行的 - 我不确定这些是否重要.
我一直在寻找方言设置,虽然我可以找到'skipinitialspace',但这似乎并没有解决问题.
要清楚 - 这不是有效的'CSV',它的数据对象松散地遵循CSV结构,但是在字段测试中有"字符".
lineterminator是\ x0d\x0a
我已尝试过双重引用的不同pernations和方言模块中的引用变量,但我无法正确解析这个问题.
我无法确信a,"或"组合仅存在于场边界上.
此问题仅存在于文件中的几个字段中的一个(最后一个),并且有几千个文件.
对于练习,我已经定义了
(defmacro quote-paren
"body -> `(body)"
[& body]
`(~@body))
Run Code Online (Sandbox Code Playgroud)
它具有预期的转换(quote-paren body)
=>``(body)`.它似乎满足一些基本测试:
user=> (macroexpand-1 `(quote-paren 3 4 5))
(3 4 5)
user=> (macroexpand-1 `(quote-paren println "hi"))
(clojure.core/println "hi")
user=> (macroexpand-1 `(quote-paren (println "hi")))
((clojure.core/println "hi"))
Run Code Online (Sandbox Code Playgroud)
但是,我一直用这个do-while宏测试它(从这里修改):
(defmacro do-while
[test & body]
(quote-paren loop []
~@body
(when ~test
(recur))))
(def y 4)
(do-while (> y 0)
(def y (dec y)))
Run Code Online (Sandbox Code Playgroud)
但结果是
IllegalStateException Attempting to call unbound fn: #'clojure.core/unquote-splicing clojure.lang.Var$Unbound.throwArity (Var.java:43)
Run Code Online (Sandbox Code Playgroud)
我不明白这一点,因为我可以看到`quote-paren'宏工作正常(~~ body插入):
user=> (macroexpand-1
`(quote-paren loop []
(def …
Run Code Online (Sandbox Code Playgroud) 在Zend Framework 1中,有一个数据库适配器的quoteinto方法,可用于引用sql语句.
我想知道它在Zend Framework 2中的等价物吗?
我正在尝试为命令创建别名以查看内存使用情况,
ps -u user -o rss,command | grep -v peruser | awk '{sum+=$1} END {print sum/1024}'
Run Code Online (Sandbox Code Playgroud)
但是,天真的,
#.bash_aliases
alias totalmem='ps -u user -o rss,command | grep -v peruser | awk '{sum+=$1} END {print sum/1024}''
Run Code Online (Sandbox Code Playgroud)
给出错误:
-bash: alias: END: not found
-bash: alias: {print: not found
-bash: alias: sum/1024}: not found
Run Code Online (Sandbox Code Playgroud)
我试过双引号,
totalmem ="ps ... |awk '{sum+=$1} END {print sum/1024}'"
, 要么
totalmem ='ps ... |awk "{sum+=$1} END {print sum/1024}"'
逃避,
totalmem ='ps ... |awk \'{sum+=$1} END {print sum/1024}\''
,或逃避双引号......但我似乎无法使它工作.
totalmem …
我用这种方式在JS中准备查询时试图逃避单引号:
_value.replace(/'/g,'%27')
Run Code Online (Sandbox Code Playgroud)
这样:
_value.replace(/\'/g,'\\\'');
Run Code Online (Sandbox Code Playgroud)
两者似乎都不起作用
你可以在这里看到一个例子:http: //services.odata.org/V3/Northwind/Northwind.svc/Orders?$ select = Freight,CustomerID&$ filter = ShipName + eq +'B'%20Beverages'&$ format = json
有谁知道如何逃避单引号?
谢谢
会'
影响特殊形式的评价吗?示例:(function 'function-name)
.如果这不起作用,为什么?
我想在order_item-table中保存自定义信息.这些信息在购物车中创建.所以我这样做就像在这篇文章中描述的那样:扩展Magento购物车
我安装了该属性
$installer->addAttribute('quote_item', 'final_delivery_time', $settings);
$installer->addAttribute('order_item', 'final_delivery_time', $settings);
Run Code Online (Sandbox Code Playgroud)
在config.xml中声明fieldset
<fieldset>
<sales_convert_quote_item>
<final_delivery_time>
<to_order_item>final_delivery_time</to_order_item>
</final_delivery_time>
</sales_convert_quote_item>
<sales_convert_order_item>
<final_delivery_time>
<to_quote_item>*</to_quote_item>
<to_invoice_item>*</to_invoice_item>
<to_shipment_item>*</to_shipment_item>
<to_cm_item>*</to_cm_item>
</final_delivery_time>
</sales_convert_order_item>
</fieldset>
Run Code Online (Sandbox Code Playgroud)
以及购物车中的一些代码
$oQuote = Mage::getSingleton('checkout/session')->getQuote();
foreach ( $oQuote->getAllItems() as $_item )
{
$orderItemId = $_item->getId();
$_item->setFinalDeliveryTime('some Value');
$_item->save();
}
Run Code Online (Sandbox Code Playgroud)
所以我得到了一个报价,我的字段final_delivery_time在sales_flat_quote_item表中有这个值
在我将订单放入onepage-review之后,我还应该在sales_flat_order_item表中包含此字段,但没有任何内容.在列中'null'.所以我需要保存在订单中的字段的值
我一直在尝试编写一个宏,除其他外,生成一个同名的编译器宏.这是我坚持的最小代码:
(defmacro definline (name lambda-list &body body)
`(define-compiler-macro ,name ,lambda-list
`(let ,,(mapcar (lambda (v) ``(,',v ,,v)) lambda-list)
,,@body)))
Run Code Online (Sandbox Code Playgroud)
我想要的是这样的:
(definline foobar (a b) (print "foobar") (+ a b))
;; Expands to
(define-compiler-macro foobar (a b)
`(let ((a ,a) (b ,b))
(print "foobar") (+ a b)))
Run Code Online (Sandbox Code Playgroud)
但我无法弄清楚如何生成let绑定((a ,a) (b ,b))
.我无法解决的问题是如何生成编译器宏表单,以便在扩展中不引用 lambda绑定的内容.我理解如何手动执行此操作,但我不确定如何对任意lambda列表执行此操作.
编辑:
经过一些更多的摆弄,我想出了这个.哪个有效.但是,它很可怕.
(defmacro definline (name lambda-list &body body)
(read-from-string
(format nil "(define-compiler-macro ~S (~{~S~^ ~})
`(let (~{(~S ,~S)~})
~{~S~}))"
name lambda-list (loop for l in lambda-list nconc …
Run Code Online (Sandbox Code Playgroud) 有人可以解释一下,我们需要什么!!
,!!!
或者{{}}
需要什么操作员吗rlang
?我试图了解更多有关准引用的知识,但没有得到任何结果。
我已经在 Stack 上找到了几篇关于 curly-curly 运算符的帖子,并且了解我们{{
在将数据帧的变量(或对象的其他子对象)传递到函数中时使用它。但在阅读了有关引用/取消引用的内容后,我对所有这些运算符及其用法完全感到困惑。
为什么我们需要它,为什么有些函数没有它就无法读取参数,最后,它们实际上是如何工作的?
如果您以最简单的方式给出答案,即使我也能理解(也许有例子?),我将不胜感激。