- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在解析一个包含路径列表的文件。我正在尝试查看一条路径是否在特定目录下。所以我有两个字符串:S1 = '/tmp/'
和 S2 = '/tmp/file.txt'
如果我想检查 S2
是否包含 S1
加上一些额外的字节,在 C 中,我会做 的
和 strncmp
S1S2
最多 strlen(S1)
字节。有没有办法在 Python 中做到这一点?我是 Python 的新手,还不知道所有可用的模块。我可以通过遍历字符串中的字符并进行比较来简单地实现这一点,但我想知道是否有任何东西可以默认为我提供这些辅助函数
最佳答案
是的。您可以这样做: if a in b:
这将检查 a
是否是 b
中任何位置的子字符串。
例如
if 'foo' in 'foobar':
print True
if 'foo' in 'barfoo':
print True
从您的帖子来看,您似乎只想查看字符串的开头。在这种情况下,您可以使用 .startswith
方法:
if 'foobar'.startswith('foo'):
print "it does!"
同样,你可以用endswith
做同样的事情:
if 'foobar'.endswith('bar'):
print "Yes sir :)"
最后,strncmp
的最直译可能是使用切片和 ==
:
if a[:n] == b[:n]:
print 'strncmp success!'
Python 也有很多工具来处理 os.path
中的路径名。模块。值得研究里面有什么。有一些非常简洁的功能。
关于python - python 中的 strncmp,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14948900/
据我了解,strcmp()(无“n”)在任一参数中看到空字符后,立即停止处理并返回结果。 因此,如果已知 100% 确定其中一个参数以 null 结尾(例如,它是一个字符串文字),则使用 strncm
我找不到我的 parse() 函数中的问题。简短介绍:我从我的终端程序发送“boot\r\n”,调用了 parse() 函数,strncmp(buffer, "boot",4) 永远不会进入 if 分
我尝试创建我自己的学校项目所需的 strncmp 函数,我运行使用相同 srcmp 函数的代码,但提供了我想要比较的 ASCII 代码的限制大小: 编码: #include int strn
我在使用 strncmp 时遇到问题。据我了解,理论上,如果两个字符串比较的字符相等,strncmp 应该返回 0;但是,当我进行比较时,代码行为不当并产生误报(不等于字符,仍然会产生 if 子句)。
该程序应该允许用户输入一些名称(直到用户希望继续),然后按升序显示这些名称。我使用了 strncmp 函数来比较 char 数组。但是,当运行此命令时,只有已排序名称列表的第一个和最后一个名称作为输出
这段代码在“check_connected”过程中有一个奇怪的行为。使用strncmp函数之前将参数转换为char[30],如果不转换,结果是“堆栈溢出”。问题出现在两个字符串的比较结果中,“Le s
我有一个静态检查器,它提示在 if 条件下使用 strncmp,说 Logical operation performed on expression with possible side effec
我真的是 C 的新手,但我已经编写 C++ 有一段时间了。我正在写一个客户端服务器聊天程序。在用户输入用户名后,我需要在 session 开始时提示用户几个不同的选项。起初我试图使用 getchar(
我不知道如何在 C 中使用字符串: 这是我的服务器的一部分:中断永远不会被调用,即使我通过 telnet 提供了字符“/”。 理想情况下,这将通过将字符串 ch 一遍又一遍地添加到它来缓冲名为 get
在运行下面的代码时,我看到出现了 "x,y" 模式。此模式正在此处打印:printf("%s", start);。但是 if (strncmp(cp, VAL, strlen(VAL) == 0 ))
我一直在解决 strncmp 和 getline 的问题...所以我做了一个小测试应用程序。 strncmp 给出误报,我不知道我做错了什么。 这是程序 #include FILE *fp=NULL
我目前有一个正在运行的链表结构,我需要找到一种方法让用户在该结构中搜索某个字段。我已经完成了,但问题是它必须是准确的。例如,如果用户输入“maggie”它会返回结果,但是如果用户输入“mag”它不会像
这是快速背景:我有一个客户端程序和一个服务器程序,它们通过 Unix 套接字相互通信。在服务器端解析收到的消息时,我试图使用 strncmp 来确定要采取的操作。 我遇到的问题是弄清楚 strncmp
Fortify 表示这是越界读取: if (strncmp("test string", "less than 32 char", 32) == 0) { ... } 表示函数从小于32个字符的边界外
如果输入是 end,strncmp("end",input,3) == 0 不应该返回 0 吗?但它返回一个 > 0 的数字。 #include int main(void) { char *s
我正在尝试编写一个比较数字前两位数字的函数,并且由于 itoa 不可用,因此我使用之前通过谷歌搜索找到的 sprintf 首先将数字转换为字符串,然后比较每个数字。由于某种奇怪的原因,当我运行这个程序
在这个关于带有信号量的共享内存(生产者/消费者)的程序中(在 DEBIAN 上),当我使用带有字符串“end”的 strncmp 函数时,为了打开 0 标志(运行)来终止 while 循环, strn
我是 C 代码新手。对于此特定代码,如果用户输入名称 john, “john is Cool” 将被打印。我认为我没有正确使用 strncmp() 。有人可以帮忙吗? #include #inclu
在我输入10个名字后,我必须打印所有以A开头的名字。它不打印任何内容 #include #include #include void main(void) { int i; char
为了在我的代码中进行文件排序,我使用了 strncmp 来比较每个字符串的第一个元素。 在这里包括我的代码: 代码 1: for (i = 1; i < file_cnt; ) { if ((st
我是一名优秀的程序员,十分优秀!