怎么用Python从一个字符串中提取出以1为开头的11位数字,中间包含字母的不算,不使用正则表达式
时间: 2024-05-11 21:16:32 浏览: 181
可以先把字符串按空格分隔成单词,然后遍历单词进行检查。
代码实现如下:
```python
s = "这是一个测试字符串,12345678901和1a2345678901应该被提取出来,而abc12345678901则不被提取。"
for word in s.split():
if word.isdigit() and len(word) == 11 and word[0] == '1':
print(word)
# 输出:12345678901 1a2345678901
```
其中 `word.isdigit()` 判断单词是否都是数字,`len(word) == 11` 判断单词长度是否为11,`word[0] == '1'` 判断单词首字母是否为1。如果以上条件都满足,则输出该单词。
相关问题
python 正则表达式 提取字符串中8986开头的数字和字母
Python 的正则表达式(Regular Expression,简称 RE)可以用于从字符串中提取特定模式的内容,比如像 "8986" 开头的数字和字母组合。你可以使用 `re` 模块来实现这个功能。这里是一个例子:
```python
import re
def extract_string(input_str):
pattern = r'^8986[a-zA-Z0-9]*' # 匹配以 '8986' 开头,后面跟随任意数量的字母和数字
match = re.search(pattern, input_str)
if match:
result = match.group() # 返回整个匹配到的部分
return result
else:
return None # 如果没找到匹配,返回 None
input_text = "Some text with an 8986 identifier like 8986abc or just 8986"
output = extract_string(input_text)
print(f"Extracted: {output}")
```
在这个示例中,`^` 表示开始位置,`[a-zA-Z0-9]` 匹配字母或数字,`*` 表示前面的元素可以出现任意次或0次。
阅读全文