Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中,在数字后拆分字符串_Python_Regex - Fatal编程技术网

在python中,在数字后拆分字符串

在python中,在数字后拆分字符串,python,regex,Python,Regex,我对python非常陌生,而且大多是编程新手。我一直在尝试将某些.txt文件解析为excel,并成功地将其中许多文件拆分为行,以便编写代码 但是,我现在有一堆文件包含我的信息,但没有合理的换行符。我的数据如下所示: company1 name _______ 123 company2 name 456 company3 name 789 名字和数字之间没有很好的指示符——有时中间有下划线,有时只有空格,有时中间有换行符。如果我可以将所有这些内容分成以每个完整数字结尾的行,那么我已经编写的

我对python非常陌生,而且大多是编程新手。我一直在尝试将某些.txt文件解析为excel,并成功地将其中许多文件拆分为行,以便编写代码

但是,我现在有一堆文件包含我的信息,但没有合理的换行符。我的数据如下所示:

company1 name _______ 123   company2 name 456 company3 name 
789
名字和数字之间没有很好的指示符——有时中间有下划线,有时只有空格,有时中间有换行符。如果我可以将所有这些内容分成以每个完整数字结尾的行,那么我已经编写的代码将完成其余的工作。理想情况下,我会有一个字符串,如下所示:

company1 name ______ 123
company2 name 456
company3 name 789
在解析出的原始字符串中使用换行符


我希望有人能帮忙

您可能应该为此使用正则表达式,它在文本中查找模式,并允许您使用换行符修改该模式

例如:

import re
line = 'company1 name _______ 123   company2 name 456 company3 name 789'
output = re.sub(r'(\s\d+\s*)', r'\1\n', line)
print output
返回

company1 name _______ 123   
company2 name 456 
company3 name 789

尝试使用拆分,然后检查每个元素的类型,看它是否为数字:

new_string = ''
data_string = data_string.replace('\n','')
data_array = data_string.split(' ')
for portion in data_array:
    if type(portion) in [int, float]:
        new_string = new_string + portion + '\n'
    else:
        new_string = new_string + portion + ' '

您可以使用
re.sub

进行拆分,拆分后的数字是否总是3位数?
import re
p = re.compile(r'(\b\d+)\s+')
test_str = "company1 name _______ 123   company2 name 456 company3 name 789"
subst = "\1\n"

result = re.sub(p, subst, test_str)