用python编码字符串
我试图对从Excel文档中获取的一段文本进行编码。它包含各种奇怪的字符,如引号、反斜杠、括号等。如何正确地将其转换为与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
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 ...'