添加字符到Python unicode strip?

时间:2015-11-26 16:50:30

标签: python regex text unicode

我想从strip中删除尾随空格和其他一些字符。这里是示例输入/输出(显式标记的制表符和换行符):

Input:
"\t [[  dwarf ]]]   \n"

Output:
"dwarf"

现在我理论上可以解决这个问题:

x = x.strip().strip("[]").strip().strip("[]")

这应该耗尽我的数据库中可能发生的每种组合;但是,如果我们有更多级别的括号和空格,我仍然需要更改代码。我可以通过循环来解决这个问题,但它会同样丑陋和低效。有没有更好的方法,或者告诉strip不要使用整个字符串,而是使用我提供的字符?

2 个答案:

答案 0 :(得分:5)

您只需拨打11-26 16:36:33.647: D/OpenCV/StaticHelper(13993): Trying to load library opencv_java3 11-26 16:36:33.647: D/OpenCV/StaticHelper(13993): Cannot load library "opencv_java3" 11-26 16:36:33.647: W/System.err(13993): java.lang.UnsatisfiedLinkError: Couldn't load opencv_java3 from loader dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/org.opencv.samples.facedetect-1.apk"],nativeLibraryDirectories=[/data/app-lib/org.opencv.samples.facedetect-1, /vendor/lib, /system/lib, /vendor/lib]]]: findLibrary returned null 11-26 16:36:33.767: D/OpenCV/StaticHelper(13993): Trying to load library opencv_java3 11-26 16:36:33.767: D/OpenCV/StaticHelper(13993): Cannot load library "opencv_java3" 11-26 16:36:33.767: W/System.err(13993): java.lang.UnsatisfiedLinkError: Couldn't load opencv_java3 from loader dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/org.opencv.samples.facedetect-1.apk"],nativeLibraryDirectories=[/data/app-lib/org.opencv.samples.facedetect-1, /vendor/lib, /system/lib, /vendor/lib]]]: findLibrary returned null 一次:

str.strip

string.whitespace是一个包含所有(ascii)空格字符的字符串。 In [6]: import string In [7]: "\t [[ dwarf ]]] \n".strip("[]" + string.whitespace) Out[7]: 'dwarf' 会删除S.strip("[]" + string.whitespace)[和空格字符的所有组合。

答案 1 :(得分:4)

这是一个支持UNICODE的正则表达式版本。

>>> import re
>>> st = "\t [[  dwarf ]]]   \n"
>>> re.sub(r"\s*\[|\]\s*", "", st, flags=re.UNICODE).strip()
'dwarf'

比前一个更优雅的正则表达式(使用ur来处理UNICODE正则表达式模式):

>>> re.sub(ur"[ \s*[\] ]+", "", st, flags=re.UNICODE).strip()