拆分后保留换行符

时间:2016-02-02 15:36:58

标签: python python-2.7 split

我有以下代码,它将我的文件拆分为4列以进行分隔 文件。最后一栏"输了"他的新台词。 我怎么能保留它们?

for line in routeFile:
    if line.__contains__("internal"):
        # split the line into a list of columns values
        fields = line.split()
        if len(fields) >= 2:
            print(fields[1], file=file_hosts)   # Prints the 2nd column - the hosts
        if len(fields) >= 3:
            print(fields[2], file=file_domain)  # Prints the 3rd column - the domain
        if len(fields) >= 4:
            print(fields[3], file=file_apps)    # Prints the 4th column - the apps

编辑: 这是我的文件,我需要应用列保持原样(使用应用之间的换行符)

> space       host                 domain              apps    
> abc    cloudconfiguration   cfdev.internal                
> abc    globalbootstrap      cfdev.internal    globalbootstrap          
> abc    tenant-management    cfdev.internal
> abc    uaa-management       cfdev.internal 
> abc    tenant               cfdev.internal    tenant               

3 个答案:

答案 0 :(得分:0)

您可以再次明确添加换行符:

for line in routeFile:
if line.__contains__("internal"):
    # split the line into a list of columns values
    fields = line.split()
    if len(fields) >= 2:
        print(fields[1], file=file_hosts)   # Prints the 2nd column - the hosts
    if len(fields) >= 3:
        print(fields[2], file=file_domain)  # Prints the 3rd column - the domain
    if len(fields) >= 4:
        print(fields[3] + '\n', file=file_apps)    # Prints the 4rt column - the apps

答案 1 :(得分:0)

您可以使用空字符串扩展字段,因此该列表中始终有四个值,即使该行中的列数较少:

Orientation

这样,应用程序文件中的空行将在输入文件的apps列中显示空单元格。这不适用于其他两个文件。如果那些对应列中的空单元格也应该有空行,则必须为它们删除<Grid> <Grid.RowDefinitions> <RowDefinition /> <RowDefinition Height="Auto" /> </Grid.RowDefinitions> <ListBox Grid.Row="0" ItemsSource="{Binding MessageList ...}"/> <WrapPanel Grid.Row="1" HorizontalAlignment="Center"> <Button Content="Expand" HorizontalAlignment="Left" Margin="0,0,40,0"/> </WrapPanel> </Grid>

答案 2 :(得分:-1)

这是我的工作解决方案:

for line in routeFile:
    if line.__contains__("internal"):
        # split the line into a list of columns values
        fields = line.split()
        fields.extend(line.split())
        fields.append('\n')
        if len(fields) >= 2:
            print(fields[1], file=file_hosts)   # Prints the 2nd column - the hosts
        if len(fields) >= 3:
            print(fields[2], file=file_domain)  # Prints the 3rd column - the domain
        if len(fields) >= 4:
            print(fields[3], file=file_domain)    # Prints the 4th column - the apps