Regex 如何测试“是否”\u";是否包含在unicode Python字符串中?

Regex 如何测试“是否”\u";是否包含在unicode Python字符串中?,regex,string,Regex,String,我有一个unicode字符串列表。我想测试“\u”是否是每个字符串元素中的子字符串,以便针对特定情况采取行动,如何实现这一点 我是用Python编程的。我有一个Python的日文到英文的dict,我计划将每个字符串中的日文替换为相应的英文单词 在下面的示例中,\u819c确实对应于一个日语字符,\u539a对应于另一个日语字符,它们一起成为一个日语单词。我有一本字典可以把这个词译成英语,现在我想替换它 “\u819c\u539a”的英文单词。因为日语和英语是混合的,所以我想首先确定它是纯asii

我有一个unicode字符串列表。我想测试“\u”是否是每个字符串元素中的子字符串,以便针对特定情况采取行动,如何实现这一点


我是用Python编程的。我有一个Python的日文到英文的dict,我计划将每个字符串中的日文替换为相应的英文单词

在下面的示例中,\u819c确实对应于一个日语字符,\u539a对应于另一个日语字符,它们一起成为一个日语单词。我有一本字典可以把这个词译成英语,现在我想替换它 “\u819c\u539a”的英文单词。因为日语和英语是混合的,所以我想首先确定它是纯asii字符串还是unicode字符串。这就是我试图检查字符串中“\u”的原因

[u'\u819c\u539a_act', u'wild\u5e45', u'Hello_world', u'hello']
我希望答案是肯定的

True, True, False, False

您可以做的最简单的事情是将每个字符串视为Unicode字符串,并查看字符串是否包含Unicode代码点大于您选择的特定值的字符。考虑下面的java代码:

public static void main(String[] args) {
    char[] c1 = new char[]{'\'', '\u819c', '\u539a', '\u0061', 'a'};
    String[] strs = new String[]{new String(c1)};
    for (String s : strs) {
       s.codePoints().forEach(System.out::println);
    }
}
在这里,我从您使用的字符串中选取了某些字符。运行此程序将打印:

39
33180
21402
97
97
请注意,第四个和第五个字符是相同的,尽管其中一个字符表示为。您认为字符“A”是否表示为“代码> > U0661 “Unicode字符”?理想情况下,您应该这样做,因为每个字符都有一个Unicode代码点。但话说回来,您应该做什么取决于您的需求

第二个和第三个字符是您似乎感兴趣识别的字符。您想知道字符串是否包含这样的字符(可能是中文字符)。如果这正是您要寻找的,那么您应该参考Unicode规范,找出要识别的字符(或其范围)的代码点,并以您需要的方式处理包含这些字符的字符串

因此,在上面的代码中,如果您执行以下操作

       s.codePoints().filter(c -> c > 4296).forEach(System.out::println);
您可以过滤掉非中文字符,生成输出:

33180
21402

你要求我们做不可能的事:-)。你的第一个字符串是“u”膜厚_事实上,它不可能与“\u”表示的模式匹配。好吧,这是我的猜测。我想OP是在问字符串是否包含unicode字符?请提及您将用于regext的编程环境,这是一个困惑。在Java中,所有内容都可以使用转义序列(后跟四个十六进制字符)表示为unicode。例如,在Java中,字符
'\u0061'
'a'
都表示ASCII字符“a”。如果字符串像“\\u0061”,是否应打印
True
?我是用Python编程的。我有一个Python的日文到英文的dict,我计划将每个字符串中的日文替换为相应的英文单词。