我在python 3中有一些字符串要解析,下面是一些示例:
str1 = 'JohnDoe\n \n(1357)\n\n\n\n\n SteveH\n \n(1387)'
str2 = 'Phisher\r\n \n(1029)\n\n\n\n\n\r\n Alex201807\r\n \n(1053)'
我需要一种简单的方法来检索:
JohnDoe 1357 SteveH 1387 from str1
Phisher 1029 Alex201807 1053 from str2
我的python经验有限,任何人都可以启发?谢谢。
答案 0 :(得分:0)
您可以使用re.sub
将所有空白字符替换为空格
>>> import re
>>> str1 = 'JohnDoe\n \n(1357)\n\n\n\n\n SteveH\n \n(1387)'
>>> re.sub(r'\s+', ' ', str1)
'JohnDoe (1357) SteveH (1387)'
>>> str2 = 'Phisher\r\n \n(1029)\n\n\n\n\n\r\n Alex201807\r\n \n(1053)'
>>> re.sub(r'\s+', ' ', str2)
'Phisher (1029) Alex201807 (1053)'
如果要删除括号,请再次执行
答案 1 :(得分:0)
str1=' '.join(str1.split())
说明:
>>> str1 = 'JohnDoe\n \n(1357)\n\n\n\n\n SteveH\n \n(1387)'
>>> str1.split()
['JohnDoe', '(1357)', 'SteveH', '(1387)']
>>> ' '.join(str1.split())
'JohnDoe (1357) SteveH (1387)'
>>> ' '.join(str1.split()).replace('(','').replace(')','')
'JohnDoe 1357 SteveH 1387'
答案 2 :(得分:0)
这应该有助于您同时获得预期的字符串和数字
import re
str1 = 'JohnDoe\n \n(1357)\n\n\n\n\n SteveH\n \n(1387)'
str2 = 'Phisher\r\n \n(1029)\n\n\n\n\n\r\n Alex201807\r\n \n(1053)'
def parse_string(text):
#Replace \r, \n, ( and )
for char in ['\r','\n','(',')']:
text = text.replace(char,"")
#Replace multiple whitespaces with one
text = re.sub('\s+', ' ', text).strip()
return text
def get_num_from_string(text):
p = re.compile(r'\d+.\d+') # Compile a pattern to capture int values
nums = [int(i) for i in p.findall(text)] # Convert strings to int
return nums
#JohnDoe 1357 SteveH 1387
#[1357, 1387]
#Phisher 1029 Alex201807 1053
#[1029, 201807, 1053]