相关疑难解决方法(0)

在Python中转义正则表达式字符串

我想使用来自用户的输入作为搜索某些文本的正则表达式模式.它有效,但我如何处理用户放置在正则表达式中有意义的字符的情况?例如,用户想要搜索Word (s):正则表达式引擎将(s)作为一个组.我希望它像一个字符串一样对待它"(s)".我可以运行replace用户输入并替换(with \()with \)但问题是我需要替换每个可能的正则表达式符号.你知道更好的方法吗?

python regex

211
推荐指数
3
解决办法
11万
查看次数

如何逃避os.system()调用?

使用os.system()时,通常需要将作为参数传递的文件名和其他参数转义为命令.我怎样才能做到这一点?优选地,可以在多个操作系统/壳上工作但特别是用于bash的东西.

我目前正在做以下操作,但我确定必须有一个库函数,或者至少是一个更优雅/更健壮/更有效的选项:

def sh_escape(s):
   return s.replace("(","\\(").replace(")","\\)").replace(" ","\\ ")

os.system("cat %s | grep something | sort > %s" 
          % (sh_escape(in_filename), 
             sh_escape(out_filename)))
Run Code Online (Sandbox Code Playgroud)

编辑:我接受了使用引号的简单答案,不知道为什么我没有想到这一点; 我猜是因为我来自Windows,其中'和'的表现略有不同.

关于安全性,我理解这个问题,但是,在这种情况下,我对os.system()提供的快速简单的解决方案感兴趣,并且字符串的来源要么不是用户生成的,要么至少是由用户输入的.可信用户(我).

python shell escaping

114
推荐指数
5
解决办法
9万
查看次数

打印str的转义表示

如何打印字符串的转义表示,例如,如果我有:

s = "String:\tA"
Run Code Online (Sandbox Code Playgroud)

我希望输出:

String:\tA
Run Code Online (Sandbox Code Playgroud)

在屏幕上而不是

String:    A
Run Code Online (Sandbox Code Playgroud)

java中的等效函数是:

String xy = org.apache.commons.lang.StringEscapeUtils.escapeJava(yourString);
System.out.println(xy);
Run Code Online (Sandbox Code Playgroud)

来自Apache Commons Lang

python escaping

8
推荐指数
2
解决办法
6585
查看次数

Unescaping使用Python 3.2转义字符串中的字符

假设我在Python 3.2中有一个字符串,如下所示:

'\n'
Run Code Online (Sandbox Code Playgroud)

当我将它打印到控制台时,显然它显示为一个新行.我想要的是能够打印它作为反斜杠后跟一个n.此外,我需要为所有转义字符执行此操作,例如\ t.所以我正在寻找一个函数unescape(),对于一般情况,它将按如下方式工作:

>>> s = '\n\t'
>>> print(unescape(s)) 
'\\n\\t'
Run Code Online (Sandbox Code Playgroud)

这可能在Python中没有构建转义字符的字典到它们的字面替换吗?

(如果有人感兴趣,我这样做的原因是因为我需要在命令行上将字符串传递给外部程序.该程序了解所有标准转义序列.)

python python-3.x

6
推荐指数
2
解决办法
9380
查看次数

强制 repr() 使用单引号

我有一个问题,有没有办法“强制”repr()在字符串周围创建始终单引号?

当我只使用时会发生这种情况 repr()

print repr("test")
'test'
print repr("test'")
"test'"
print repr("test\"")
'test"'
print repr("test'\"")
'test\'"'
Run Code Online (Sandbox Code Playgroud)

所以最后一个实际上是我想要的,但我不想总是添加\\"以获得单引号。


编辑:我不会将答案标记为已接受,因为正如@martijn-pieters 所指出的那样,我将其repr()用于不适合的目的。

python quotes escaping repr

5
推荐指数
1
解决办法
2324
查看次数

如何摆脱字符串表示周围的单引号?

此示例代码打印文件中一行的表示.它允许'\n'在一行中查看其内容,包括控制字符,因此我们将其称为行的"原始"输出.

print("%r" % (self.f.readline()))
Run Code Online (Sandbox Code Playgroud)

但是,输出显示的'是每个末尾添加的字符不在文件中.

'line of content\n'

如何摆脱输出周围的单引号?
(Python 2.7和3.6中的行为相同.)

python data-representation

5
推荐指数
1
解决办法
4397
查看次数

如何在Python中将转义字符串传递给shell脚本

我正在尝试创建一个Python脚本,然后运行shell脚本"js2coffee"将一些javascript转换为coffeescript.

从命令行我可以运行它,并再次获得coffeescript ...

echo "var myNumber = 100;" | js2coffee

我需要做的是使用Python中的相同模式.

在Python中,我来到这样的事情:

command = "echo '" + myJavscript + "' | js2coffee"
result = os.popen(command).read()
Run Code Online (Sandbox Code Playgroud)

这有时会起作用,但是有些问题与特殊字符(我认为大多数是引号)没有被正确转义myJavascript.必须有一种标准的方法来做到这一点.有任何想法吗?谢谢!

python

1
推荐指数
1
解决办法
1082
查看次数

将"\"添加到字符串Python | 如何在字符串中的每个paren之前插入"\"?

如何将"\"字符串添加到字符串中?

例如,如果我有"testme",我做

"testme"+"\"
Run Code Online (Sandbox Code Playgroud)

我会收到一个错误.

"\"在字符串中每个paren之前添加a的"pythonic"方法是什么?

比如来自 "(hi)" to "\(hi\)"

我目前的方法是迭代每个字符并尝试追加一个"\"我觉得不是"pythonic"的字符串

python

0
推荐指数
1
解决办法
165
查看次数