相关疑难解决方法(0)

在Python中处理字符串中的转义序列

有时当我从文件或用户那里获得输入时,我会得到一个包含转义序列的字符串.我想以与Python处理字符串文字中的转义序列相同的方式处理转义序列.

例如,假设myString定义为:

>>> myString = "spam\\neggs"
>>> print(myString)
spam\neggs
Run Code Online (Sandbox Code Playgroud)

我想要一个函数(我会称之为process)这样做:

>>> print(process(myString))
spam
eggs
Run Code Online (Sandbox Code Playgroud)

重要的是该函数可以处理Python中的所有转义序列(在上面链接的表中列出).

Python有功能吗?

python string escaping

93
推荐指数
4
解决办法
8万
查看次数

我如何在Python3中使用.decode('string-escape')?

我有一些需要转义的转义字符串.我想用Python做这件事.

例如,在python2.7中,我可以这样做:

>>> "\\123omething special".decode('string-escape')
'Something special'
>>> 
Run Code Online (Sandbox Code Playgroud)

我如何在Python3中完成它?这不起作用:

>>> b"\\123omething special".decode('string-escape')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
LookupError: unknown encoding: string-escape
>>> 
Run Code Online (Sandbox Code Playgroud)

我的目标是成为一个像这样的字符串:

s\000u\000p\000p\000o\000r\000t\000@\000p\000s\000i\000l\000o\000c\000.\000c\000o\000m\000
Run Code Online (Sandbox Code Playgroud)

把它变成:

"support@psiloc.com"
Run Code Online (Sandbox Code Playgroud)

在进行转换之后,我将探测我的字符串是用UTF-8还是UTF-16编码的.

python escaping python-3.x

49
推荐指数
4
解决办法
4万
查看次数

在Ruby中逃脱和转换字符串的最佳方法是什么?

Ruby有没有任何内置的转义转义字符串的方法?在过去,我使用正则表达式; 但是,我发现Ruby可能一直在内部进行这样的转换.也许这个功能在某处暴露.

到目前为止,我已经提出了这些功能.他们工作,但他们似乎有点hacky:

def escape(s)
  s.inspect[1..-2]
end

def unescape(s)
  eval %Q{"#{s}"}
end
Run Code Online (Sandbox Code Playgroud)

有没有更好的办法?

ruby escaping

27
推荐指数
7
解决办法
5万
查看次数

Python Argparse:原始字符串输入

抱歉,如果以前曾问过这个问题,我确实进行了搜索,但所有命中似乎都与python raw字符串有关,而不是argparse。

无论如何,我有一个代码,用户输入一个字符串,然后对该字符串进行处理。但是,我有一个问题,因为我希望我的代码能够区分\n和,\\n以便用户可以控制他们是否换行或\n分别出现在输出中。

这本身非常简单,并且我可以使逻辑工作来检查字符串等。但是,argparse似乎并没有保持输入字符串的原始状态。因此,如果我要写:Here is a list:\nItem 1它将解析为Here is a list:\\nItem 1。如果要在输入字符串中替换\n\\n,则会解析出完全相同的事物,因此无法区分两者。

我可以包括bodge(例如,我可以让用户输入发言权$\n\n出现在输出,或者只是\n一个换行符)。但这很麻烦,并使代码的使用复杂化。

有没有办法确保被argparse解析的字符串是原始的?(即,如果我输入\n它解析\n而不是\\n

再次,很抱歉,如果以前曾有人问过这个问题,但是我找不到答案,经过一个多小时的尝试找到答案后,我没主意了(不要再犹豫了)。提前为任何和所有帮助加油。

示例代码(很抱歉,如果这不起作用,请不确定如何最好地为argparse做示例代码!):

import argparse

parser = argparse.ArgumentParser( description = 'Test.' )
parser.add_argument( 'text', action = 'store', type = str, help = 'The text to parse.' )

args = parser.parse_args( )

print( repr( args.text ) )
Run Code Online (Sandbox Code Playgroud)

python string rawstring argparse

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

将argparse转义字符作为选项处理

argparse库对转义字符(如\ t到制表符和\ n到换行符)的处理方式与我更喜欢。该问题的答案给出了解决方案,但我想使它对用户不可见。

给定程序:

#!/usr/bin/env python3
import argparse

parser = argparse.ArgumentParser()
parser.add_argument('-d', '--delimiter', default='\t')
args = parser.parse_args()
print(args)
Run Code Online (Sandbox Code Playgroud)

您将收到以下输出:

bash$ parser.py -d \t
Namespace(delimiter='t')

bash$ parser.py -d \\t
Namespace(delimiter='\\t')

bash$ parser.py -d '\t'
Namespace(delimiter='\\t')

bash$ parser.py -d '\\t'
Namespace(delimiter='\\\\t')

bash$ parser.py -d "\t"
Namespace(delimiter='\\t')

bash$ parser.py -d "\\t"
Namespace(delimiter='\\t')

bash$ parser.py -d $'\t'
Namespace(delimiter='\t')

bash$ parser.py -d $'\\t'
Namespace(delimiter='\\t')

bash$ parser.py -d $"\t"
Namespace(delimiter='$\\t')

bash$ parser.py -d $"\\t"
Namespace(delimiter='$\\t')
Run Code Online (Sandbox Code Playgroud)

我只有用

parser.py -d $'\t'
Run Code Online (Sandbox Code Playgroud)

但我希望输入看起来像

parser.py -d \t 
Run Code Online (Sandbox Code Playgroud)

或更小 …

python delimiter argparse

5
推荐指数
2
解决办法
2772
查看次数

Python 3.6,utf-8 到 unicode 的转换,带双反斜杠的字符串

有很多关于 utf-8 > unicode 转换的问题,但我仍然没有找到我的问题的答案。

让我们有这样的字符串:

a = "Je-li pro za\\xc5\\x99azov\\xc3\\xa1n\\xc3\\xad"
Run Code Online (Sandbox Code Playgroud)

Python 3.6 理解这个字符串就像Je-li pro za\xc5\x99azov\xc3\xa1n\xc3\xad。我需要将此类似 utf-8 的字符串转换为 unicode 表示形式。最终的结果应该是Je-li pro za?azování

随着a.decode("utf-8")我得到AttributeError: 'str' object has no attribute 'decode',因为 Python 意味着该对象已经被解码。

如果我先用 将它转换为字节bytes(a, "utf-8"),反斜杠只会加倍并再次.decode("utf-8")将其返回到我当前的状态a

如何获得unicode字符串济利亲咱?azování从这个a

unicode utf-8 python-3.x python-unicode

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