Python在同一个字符串中的一个或另一个点上剥线

2024-04-27 03:20:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我想保存一个介于开始和结束点之间的短语。在

开始是start = '->'。问题是它可以有两个不同的端点(取决于我得到的字符串)end = ':\'或{}。在

所以我尝试在同一个循环中分割两端的字符串':\'和{}。我尝试过使用or, split, strip, striplines和其他方法,但是没有什么能起作用

我的代码现在看起来如何(不工作)

        if line.startswith('->'):
                start = '-> '  # take string from
                end = ':\ ' #either end at this character
                end1 = '[Channel]' # or this character
                data.append(line[line.find(start) + 3:line.find(end or end1)].strip()) 

包含字符串的文件的外观示例

^{pr2}$

基本上我想提取数字


Tags: or方法字符串代码linefindthis端点
3条回答

可以使用空间拆分:

>>> s = "-> 4334524 [Channel]"
>>> data = s.split()
>>> data
[u'->', u'4334524', u'[Channel]']
>>> data[1]
u'4334524'

编辑时间:

^{pr2}$

试试这个。见输出here

if line.startswith('->'):
    start = '-> '  
    end = ':\ '
    end1 = ' [Channel]' 
    x=line.strip(start)
    x=x.strip(end)
    x=x.strip(end1)
    data.append(x)

这是一个简单的正则表达式问题如果你的数据是你现在所显示的,那么你可以很简单地用正则表达式来解决这个问题。在

import re

numbers = re.compile("[\d|\w]{2}\s")
just_numbers = []
for line in data:
    just_numbers.append(" ".join([x.strip() for x in numbers.findall(line)]))

print(just_numbers)

输出

^{pr2}$

[\d|\w]{2}\s中,[\d|\w]匹配字母或数字字符,因此0-9a-z-A-Z。然后它后面的{2}意味着我想要的字符串正好是两个字符,与前面的模式匹配(也就是[\d|\w])。最后,\s匹配空白字符。所以整体模式匹配AA1A11等形式的所有字符串。请注意,每一个后面都有一个空格。在

相关问题 更多 >