我有一个字符串,
a = '(abcd: fgh 234) (abcd: d89 7j6) (pqrs: ..1000000002.) (xyz: 0983)'
我只需要价值'fgh 234',但我很难削减这个字符串。请帮忙。
我尝试创建dict但没有帮助,因为'abcd'出现两次,它变为2nd而不是first。此外,尝试使用拆分,但对我不起作用。我之前没有知道re模块,但是修复了我的问题。谢谢大家的帮助!
答案 0 :(得分:2)
由于我们不知道“切断字符串”究竟意味着什么,因此有很多方法可以做到这一点。正则表达式方法已被涵盖。如果您想要的数据始终位于字符串中的相同位置,那么简单的slice就可以解决问题:
>>> a[7:14]
'fgh 234'
答案 1 :(得分:1)
我会在这里使用re.search
:
>>> from re import search
>>> a = '(abcd: fgh 234) (abcd: d89 7j6) (pqrs: ..1000000002.) (xyz: 0983)'
>>> search("\(abcd:\s(.+?)\)", a).group(1)
'fgh 234'
>>>
以下是正则表达式模式的细分:
\( # Opening parenthesis
abcd: # abcd:
\s # Space
(.+?) # One or more characters captured non-greedily
\) # Closing parenthsis
答案 2 :(得分:1)
这取决于'切断此字符串'的含义?什么保持不变?
琐碎的是,您可以使用正则表达式在第一个:
和第一个)
之间'剪切字符串':
>>> import re
>>> a = '(abcd: fgh 234) (abcd: d89 7j6) (pqrs: ..1000000002.) (xyz: 0983)'
>>> re.search(r':\s([^)]+)', a).group(1)
'fgh 234'
您可以使用相同的技术来获取:
和结束)
之间的所有元素与正则表达式:
>>> re.findall(r':\s([^)]+)', a)
['fgh 234', 'd89 7j6', '..1000000002.', '0983']
然后索引你想要的那个:
>>> re.findall(r':\s([^)]+)', a)[0]
'fgh 234'
>>> re.findall(r':\s([^)]+)', a)[1]
'd89 7j6'
通过更多细节,我可以提供更具体的正则表达式。
或者,使用Python字符串操作的非正则表达式:
>>> a[a.index(':')+2:a.index(')')]
'fgh 234'