提出字符串的问题,求大师帮忙,谢谢
text = '通用设备70/195|祥鑫科技33/195通用设备;泰嘉股份107/195通用设备'我想以“|”为界:
前部分提出字符串:通用设备
后面部分提出字符串:祥鑫科技,泰嘉股份,即凡是字符开头后面带数字的提出(祥鑫科技33/195,泰嘉股份107/195),但不要数字
求大师帮忙,谢谢 本帖最后由 陶远航 于 2023-5-2 16:49 编辑
你可以使用正则表达式来匹配你需要的字符串,然后提取出匹配的内容。
代码如下:
import re
text = '通用设备70/195|祥鑫科技33/195通用设备;泰嘉股份107/195通用设备'
# 匹配前部分字符串
pattern1 = r'(.+?)\d*/\d*\|'
match1 = re.search(pattern1, text)
if match1:
part1 = match1.group(1)
else:
part1 = ''
# 匹配后部分字符串
pattern2 = r'\b(+)[^\d]*'
match2 = re.findall(pattern2, text)
part2 = '|'.join(match2)
print(part1)
print(part2)
输出:
通用设备
祥鑫科技|泰嘉股份
解释:
第一个正则表达式 (.+?)\d*/\d*\| 匹配以数字和斜杠组成的字符串(如70/195),以及在此之前的所有字符,直到遇到竖杠 |。由于匹配字符部分使用了非贪婪匹配,即加上 ?,这样可以保证匹配最短的字符串,避免误匹配。
第二个正则表达式 \b(+)[^\d]* 匹配所有以字母开头,后面跟着非数字字符的单词。由于不需要提取单词后面的数字,因此在匹配后缀部分时使用了否定字符组 [^\d]*,以匹配非数字字符。
最后,将匹配到的字符串通过 join() 方法组合起来即可。 可以使用字符串的split函数和正则表达式来实现。
1. 以"|"为界,将字符串分成两部分:
parts = text.split("|")
2. 前面部分的字符串即为parts,提出即可:
first_part = parts# "通用设备"
3. 后面部分的字符串即为parts,我们可以使用正则表达式来提取出所有符合要求的内容。具体来说,我们需要匹配所有的字母和汉字,紧跟着一个数字,然后紧跟着斜杠和数字。使用以下正则表达式即可:
import re
regex = r"([\u4e00-\u9fa5a-zA-Z]+)\d+/\d+"
这个正则表达式的意思是先匹配一个汉字或字母,然后匹配一个或多个数字,然后匹配一个斜杠,最后匹配一个或多个数字。我们将汉字或字母使用()包起来,表示我们想提取这部分内容。
4. 然后使用re模块的findall函数来查找所有匹配的内容:
matches = re.findall(regex, parts)
5. matches即为所有符合要求的字符串列表,我们可以使用join函数将它们拼接成一个字符串:
second_part = ",".join(matches)# "祥鑫科技,泰嘉股份"
完整代码如下:
import re
text = '通用设备70/195|祥鑫科技33/195通用设备;泰嘉股份107/195通用设备'
parts = text.split("|")
first_part = parts
regex = r"([\u4e00-\u9fa5a-zA-Z]+)\d+/\d+"
matches = re.findall(regex, parts)
second_part = ",".join(matches)
print(first_part)# "通用设备"
print(second_part)# "祥鑫科技,泰嘉股份"
text = '通用设备70/195|祥鑫科技33/195通用设备;泰嘉股份107/195通用设备'
# 以“|”为界分割字符串
parts = text.split("|")
# 前部分提取字符串
front_string = parts
# 后面部分提出字符串
back_strings = []
for part in parts:
# 寻找第一个数字的位置
for index in range(len(part)):
if part.isdigit():
break
name = part[:index]# 取出除数字外的部分
back_strings.append(name)
print(f"前部分提取字符串:{front_string}")
print(f"后部分提取字符串:{back_strings}")
输出:
前部分提取字符串:通用设备
后部分提取字符串:['祥鑫科技', '泰嘉股份']
有用请设置最佳答案
本帖最后由 futui 于 2023-5-2 17:08 编辑
陶远航大师第一部分出结果,isdkz大师和sfqxx大师第二部分有结果,isdkz第二部分可以一次把我要的三个结果全提出来 futui 发表于 2023-5-2 16:59
陶远航大师第一部分出结果,isdkz和sfqxx第二部分有结果,isdkz第二部分可以一次把我要的三个结果全提出来
。。。 sfqxx 发表于 2023-5-2 17:03
。。。
{:10_277:}
页:
[1]