如何检查Python对象是否为字符串(常规或Unicode)?
我想检查一个字符串是否是ASCII格式.
我知道ord(),但是当我尝试时ord('é'),我有TypeError: ord() expected a character, but string of length 2 found.我知道它是由我构建Python的方式引起的(如ord()文档中所述).
还有其他方法可以检查吗?
我有一个selenium/python项目,它使用正则表达式匹配来查找html元素.这些元素属性有时包括丹麦语/挪威语字符ÆØÅ.问题出在下面的代码段中:
if (re.match(regexp_expression, compare_string)):
result = True
else :
result = False
Run Code Online (Sandbox Code Playgroud)
无论是regex_expression与compare_string执行正则表达式匹配之前被操纵.如果我在执行上面的代码片段之前打印它们,并打印结果,我会得到以下输出:
Regex_expression: [^log på$]
compare string: [log på]
result = false
Run Code Online (Sandbox Code Playgroud)
我把括号放在上面以确保没有空格.它们只是print语句的一部分,而不是String变量的一部分.
但是,如果我尝试在单独的脚本中重现问题,如下所示:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import re
regexp_expression = "^log på$"
compare_string = "log på"
if (re.match(regexp_expression, compare_string)):
print("result true")
result = True
else :
print("result = false")
result = False
Run Code Online (Sandbox Code Playgroud)
那么结果是真的.
怎么会这样?为了使它更奇怪,它更早地工作,我不确定我编辑的是什么让它变得繁荣......
正则表达式比较方法的完整模块如下所示.我自己没有编写这个,所以我不是100%熟悉所有替换语句和字符串操作的原因,但我认为它应该无关紧要,当我可以在失败的匹配方法之前检查字符串在底部...
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import re
def regexp_compare(regexp_expression, compare_string):
#final int DOTALL …Run Code Online (Sandbox Code Playgroud) def order_check_uni(body): \n ccnt=0 \n for x in body: \n if x.isUpper(): \n ccnt+=1 \n if ccnt>2: \n print 'success' \nRun Code Online (Sandbox Code Playgroud)\n\n\xd0\xb0\xd0\xb1\xd0\xb2\xd0\xb3\xd0\xb4\xd0\xb5\xd1\x91\xd0\xb6\xd0\xb7\xd0\xb8\xd0\xb9\xd0\xba\xd0\xbb\xd0\xbc\xd0\xbd\xd0\xbe\xd0\xbf\xd1\x80\xd1\x81\xd1\x82\xd1\x83\xd1\x84\xd1\x85\xd1\x86\xd1\x87\xd1\x88\xd1\x89\xd1\x8a\xd1\x8b\xd1\x8c\xd1\x8d\xd1\x8e\xd1\x8f \xc2\xae\xc2\xa9\xe2\x84\xa2我尝试使用该脚本在字符串正文中查找字符非 ASCII 或特殊字符或 unicode 字符或西里尔字符,我尝试替换isUpper()为isascii()and len(x) == len(x.encode)、 withunichr()和其他函数替换,但仍然发现错误,有人可以帮助我吗?
如何安全地将pandas对象转换为h2o数据帧?
import h2o
import pandas as pd
df = pd.DataFrame({'col1': [1,1,2], 'col2': ['César Chávez Day', 'César Chávez Day', 'César Chávez Day']})
hf = h2o.H2OFrame(df) #gives error
Run Code Online (Sandbox Code Playgroud)
UnicodeEncodeError:'ascii'编解码器无法编码位置4中的字符'\ xe9':序数不在范围内(128)
环境: Python 3.5,h2o 3.10.4.2