如何比较忽略几个字符的两个字符串

时间:2015-05-31 20:08:13

标签: python

我想比较python中的两个字符串忽略一些字符,比如字符串是:

"http://localhost:13555/ChessBoard_x16_y20.bmp"

我想忽略字符串中的值"16""20";无论这些值是什么,如果字符串的其余部分与此字符串相同,那么我应该得到结果"TRUE"。我怎么能这样做?

示例:

URL = "http://localhost:13555/ChessBoard_x05_y12.bmp"

if URL == "http://localhost:13555/ChessBoard_x16_y16.bmp":
    print("TRUE")
else:
    print("FALSE")

输出:

TRUE

4 个答案:

答案 0 :(得分:10)

使用regular expressions。这是针对您的情况。点匹配任何符号。 \ d匹配一个数字。必须转义一些特殊符号。

import re
if re.match(r'http://localhost:13555/ChessBoard_x\d\d_y\d\d\.bmp', URL):
    print("TRUE")
else:
    print("FALSE")

答案 1 :(得分:0)

也许你可以用正则表达式来做到这一点

>>> import re
>>> CHESS_BOARD_PATTERN = r'http://localhost:13555/ChessBoard_x\d+_y\d+.bmp'
>>> def is_chess_board_endpoint(endpoint):
...     return bool(re.match(CHESS_BOARD_PATTERN, endpoint))
... 
>>> is_chess_board_endpoint('http://localhost:13555/ChessBoard_x16_y20.bmp')
True
>>> is_chess_board_endpoint('http://localhost:13555/ChessBoard_x05_y12.bmp')
True
>>> is_chess_board_endpoint('http://google.com.br')
False

但很明显,根据您的解决方案,您必须改进此正则表达式,因为如果您更改主机(例如从localhost更改为192.168.0.10)将无法正常工作。

答案 2 :(得分:-1)

def checkstrings(string1, string2):
    if len(string1) != len(string2):
        return False
    for x in range(len(string1)):
        if x == 35 or x == 36 or x == 39 or x == 40:
            continue
        if string1[x] != string2[x]:
            return False
    return True

JAVA:

public static boolean checkStrings(String string1, String string2){
        if(string1.length() != string2.length()){
                return false;
        }
        for(int x = 0; x < string1.length(); x++){
                if(x == 35 || x == 36 || x == 39 || x == 40){
                        continue;
                }

                if(string1.charAt(x) != string2.charAt(x)){
                        return false;
                }
        }
        return true;

}

答案 3 :(得分:-2)

您可以遍历字符串中的字符并检查它们是否为数字。即

如果x.isdigit():