用python编码字符串

用python编码字符串,python,string,encode,Python,String,Encode,我试图对从Excel文档中获取的一段文本进行编码。它包含各种奇怪的字符,如引号、反斜杠、括号等。如何正确地将其转换为与Python兼容的字符串,以便我可以处理它并将其写入变量 ExampleText = "MINIMUM TRACK FASTENING SHALL BE 0.145" DIAMETER POWDER ACTUATED FASTENERS (P.A.F.S) SPACED ON 8" CENTERS FOR BEARING WALLS, AND AT 12" O.C. FOR NO

我试图对从Excel文档中获取的一段文本进行编码。它包含各种奇怪的字符,如引号、反斜杠、括号等。如何正确地将其转换为与Python兼容的字符串,以便我可以处理它并将其写入变量

ExampleText = "MINIMUM TRACK FASTENING SHALL BE 0.145" DIAMETER POWDER ACTUATED FASTENERS (P.A.F.S) SPACED ON 8" CENTERS FOR BEARING WALLS, AND AT 12" O.C. FOR NON-LOAD BEARING WALLS (U.N.O.), WITH 1 1/2" MINIMUM PENETRATION INTO CONCRETE. AT X-BRACED SHEAR WALLS, TRACK SHALL BE ATTACHED PER DETAILS.  At Infinity Shear Panels (ISP’S) attach to slab w/ 0.145" x 1 1/2” powder actuated fasteners spaced on 4” centers (HILTI DS 37 P10 or equal) -OR- (6) 3/8" DIA. 2205 expansion anchors w/ 2 1/2" min. embedment - OR-Simpson "Titen" screws  @ 6" o.c."
我试过:
str(ExampleText)
,但显然失败了

谢谢你的帮助

另外,这里是我得到的错误:UnicodeEncodeError:('unknown','\x00',0,1',)
ps2。我在IronPython2.7我认识一个流浪汉:-(

来自我们在评论中的对话

# -*- coding: utf-8 -*-

ExampleText = '"MINIMUM TRACK FASTENING SHALL BE 0.145" DIAMETER POWDER ACTUATED FASTENERS (P.A.F.S) SPACED ON 8" CENTERS FOR BEARING WALLS, AND AT 12" O.C. FOR NON-LOAD BEARING WALLS (U.N.O.), WITH 1 1/2" MINIMUM PENETRATION INTO CONCRETE. AT X-BRACED SHEAR WALLS, TRACK SHALL BE ATTACHED PER DETAILS.  At Infinity Shear Panels (ISP’S) attach to slab w/ 0.145" x 1 1/2” powder actuated fasteners spaced on 4” centers (HILTI DS 37 P10 or equal) -OR- (6) 3/8" DIA. 2205 expansion anchors w/ 2 1/2" min. embedment - OR-Simpson "Titen" screws  @ 6" o.c."'

print(ExampleText)
编码标题行是必需的,因为其中包含非ascii字符

您还可以使用
'
'
来包装文本:


请注意,更好的解决方案可能是直接从数据中获取字符串,而不是使用类似的包将其复制/粘贴到代码中。

如果给定的代码与您的代码完全匹配,那么它出现问题就不足为奇了。您用双引号将其括起来,但字符串包含双引号。按原样,字符串将d当解释器看到下一个双引号时,就会出现一堆它无法识别的术语(如
直径
粉末
),然后最终会出现另一个字符串,依此类推

您需要用反斜杠转义字符串的双引号,或者在字符串的每边用三个引号括起来

ExampleText = "MINIMUM TRACK FASTENING SHALL BE 0.145\" DIAMETER POWDER ACTUATED FASTENERS (P.A.F.S) SPACED ON 8\" CENTERS FOR BEARING WALLS, AND AT 12\" O.C. FOR NON-LOAD BEARING WALLS (U.N.O.), WITH 1 1/2\" MINIMUM PENETRATION INTO CONCRETE. AT X-BRACED SHEAR WALLS, TRACK SHALL BE ATTACHED PER DETAILS.  At Infinity Shear Panels (ISP’S) attach to slab w/ 0.145\" x 1 1/2\" powder actuated fasteners spaced on 4\" centers (HILTI DS 37 P10 or equal) -OR- (6) 3/8\" DIA. 2205 expansion anchors w/ 2 1/2\" min. embedment - OR-Simpson \"Titen\" screws  @ 6\" o.c."

SO的内置语法高亮显示表明您的示例由多个字符串组成,而我的示例是一个连续字符串

此外,字符串只包含正斜杠,没有反斜杠,因此没有问题。如果有反斜杠,并且您想解决这个问题,您可以在字符串前面加一个
r
来表示原始字符串:
r'hello\nworld
打印为
hello\nworld
。原始字符串唯一无法处理的是当字符串中的st字符是反斜杠。请在其后添加:
r'C:\Users\jsmith'+'\\\'
r'C:\Users\jsmith'\\\'
(在串联文字字符串时,
+
不是严格必需的)


这仅在将字符串写入源代码时才有必要。来自外部源(如
input()
或文件)的字符串将自动处理。

您可以使用
re
包中的
escape()
函数:

>>> import re
>>> re.escape(ExampleText)
    '\\"MINIMUM\\ TRACK\\ FASTENING\\ SHALL\\ BE\\ 0.145\\"\\ DIAMETER ...'
>>> ExampleText = ExampleText.decode('string_escape')
    '"MINIMUM TRACK FASTENING SHALL BE 0.145" DIAMETER ...'

escape()
函数将用其双反斜杠等价物对所有非字母数字字符进行转义。这应该可以很好地处理输入字符串。

那么您已经有了一个
ExampleText
对象了吗?它是什么类型(
print type(ExampleText)
)它是一个字符串对象。当我使用ExampleText.GetType()时它返回System.string我还收到了以下错误UnicodeEncodeError:('unknown','\x00',0,1',)因此
ExampleText
对象不是python中的,它是类似VBA或其他东西的,但是您想在python脚本中使用该值吗?将整个字符串用单引号括起来:
ExampleText='“MINIMUM…o.c。“
您列出的字符串中没有单引号——如果您将该字符串用单引号括起来,这将是一个开始。
ExampleText = """MINIMUM TRACK FASTENING SHALL BE 0.145" DIAMETER POWDER ACTUATED FASTENERS (P.A.F.S) SPACED ON 8" CENTERS FOR BEARING WALLS, AND AT 12" O.C. FOR NON-LOAD BEARING WALLS (U.N.O.), WITH 1 1/2" MINIMUM PENETRATION INTO CONCRETE. AT X-BRACED SHEAR WALLS, TRACK SHALL BE ATTACHED PER DETAILS.  At Infinity Shear Panels (ISP’S) attach to slab w/ 0.145" x 1 1/2” powder actuated fasteners spaced on 4” centers (HILTI DS 37 P10 or equal) -OR- (6) 3/8" DIA. 2205 expansion anchors w/ 2 1/2" min. embedment - OR-Simpson "Titen" screws  @ 6" o.c."""
>>> import re
>>> re.escape(ExampleText)
    '\\"MINIMUM\\ TRACK\\ FASTENING\\ SHALL\\ BE\\ 0.145\\"\\ DIAMETER ...'
>>> ExampleText = ExampleText.decode('string_escape')
    '"MINIMUM TRACK FASTENING SHALL BE 0.145" DIAMETER ...'