鱼C论坛

 找回密码
 立即注册
查看: 1057|回复: 11

[已解决]Python中如何截取字符?

[复制链接]
发表于 2020-5-14 08:33:45 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
Python在网页中获得的字符是

总数:123456

只想将数字部分存入Excel,在Python中,如何截取字符?

现在的效果:

总数
总数:38351
总数:145450
总数:231720
总数:29420
总数:72861
总数:20586
总数:37661
总数:40405

想要的效果:

总数
38351
145450
231720
29420
72861
20586
37661
40405
最佳答案
2020-5-14 08:41:55
本帖最后由 xiaosi4081 于 2020-5-14 09:06 编辑
heidern0612 发表于 2020-5-14 08:39
字符串切片?

比如这个“总数:38351”,只要数字的话,字符串切片就是[3:]


例:
import re
count = len(open("test.txt",'r').readlines())
count=count+1
s = open("test.txt",'r',encoding='gbk')
t="" #这边要给t初始化,不然下面会报错
for i in range(1,count):
    j=s.readline()
    t=t+re.sub("\d","",j) 
    t=t+'\n'
print(t)
test.txt:
总数
总数:38351
总数:145450
总数:231720
总数:29420
总数:72861
总数:20586
总数:37661
总数:40405
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-5-14 08:39:02 | 显示全部楼层
字符串切片?

比如这个“总数:38351”,只要数字的话,字符串切片就是[3:]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-14 08:41:42 | 显示全部楼层
本帖最后由 liuzhengyuan 于 2020-5-14 08:56 编辑

split("总数:")
>>> s = """总数:38351
总数:145450
总数:231720
总数:29420
总数:72861
总数:20586
总数:37661
总数:40405"""
>>> lst = s.split("总数:")
>>> lst
['', '38351\n', '145450\n', '231720\n', '29420\n', '72861\n', '20586\n', '37661\n', '40405']
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-14 08:41:55 | 显示全部楼层    本楼为最佳答案   
本帖最后由 xiaosi4081 于 2020-5-14 09:06 编辑
heidern0612 发表于 2020-5-14 08:39
字符串切片?

比如这个“总数:38351”,只要数字的话,字符串切片就是[3:]


例:
import re
count = len(open("test.txt",'r').readlines())
count=count+1
s = open("test.txt",'r',encoding='gbk')
t="" #这边要给t初始化,不然下面会报错
for i in range(1,count):
    j=s.readline()
    t=t+re.sub("\d","",j) 
    t=t+'\n'
print(t)
test.txt:
总数
总数:38351
总数:145450
总数:231720
总数:29420
总数:72861
总数:20586
总数:37661
总数:40405
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-14 08:44:47 | 显示全部楼层
或者你直接提取数字
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-14 08:45:57 | 显示全部楼层
或者
s = "总数:38351"
s = s.split(":")[1]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-14 08:57:33 | 显示全部楼层
本帖最后由 Twilight6 于 2020-5-14 09:22 编辑

这个有明显规律的最简单了,直接列表切片就好
string[3:]
你想麻烦一点,用正则也行:
re.findall('总数:(\d*)',string)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-14 09:08:09 | 显示全部楼层
Twilight6 发表于 2020-5-14 08:57
这个有明显规律的最简单了,直接列表切片就好

你想麻烦一点,用正则也行:

你那个正则不行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-14 09:09:18 | 显示全部楼层

怎么说不行,指出错误我改改
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-14 09:10:44 | 显示全部楼层
Twilight6 发表于 2020-5-14 09:09
怎么说不行,指出错误我改改

我刚刚试了,结果是空的:
[]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-14 09:14:48 | 显示全部楼层
xiaosi4081 发表于 2020-5-14 09:10
我刚刚试了,结果是空的:


那是因为我代码里面的冒号是中文的,你的字符串是英文的,而且我打成总分了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-30 10:48:15 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-21 00:46

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表