精华内容
下载资源
问答
  • 以分隔符分隔文本文件Definitions: 定义: Source System The IT system that provide the original data. Targeted System The IT system that will received the output data from Source ....

    以分隔符分隔的文本文件

    Definitions:

    定义:

    Source System
    The IT system that provide the original data.
    Targeted System
    The IT system that will received the output data from Source System.
    Input File
    Referring to the original data file that generated from the Source System.
    Output File
    Referring to the formatted Input File.
    Source File
    Referring to the Final Data File that will being used by the Targeted System.
    File Convertor
    The program that converts the Input File to Output File.
    Template File
    The configuration file that defines the rules how the Output File should be generated via the File Convertor.
    Admin Executables / Template File Generator
    The program that defines the configuration rules how the Output File should be generated via the File Convertor.
    源系统
    提供原始数据的IT系统。
    目标系统
    将从源系统接收输出数据的IT系统。
    输入文件
    引用从源系统生成的原始数据文件。
    输出文件
    参考格式化的输入文件。
    源文件
    引用目标系统将要使用的最终数据文件。
    文件转换器
    将输入文件转换为输出文件的程序。
    模板文件
    定义规则的配置文件,该规则应如何通过文件转换器生成输出文件。
    管理员可执行文件/模板文件生成器
    定义配置规则的程序应如何通过文件转换器生成输出文件。

    The Issue

    问题

    Relating to this file transfer protocol, there are a few issues that need to be agreed on, especially to do with how the data is being transferred.

    关于此文件传输协议,需要商定一些问题,尤其是与如何传输数据有关。

    There are a few options available:

    有一些可用的选项:

    1. Database to Database Integration Services - Data are being transferred seamlessly between Source System and Targeted System with authenticated credentials

      数据库到数据库集成服务-数据通过身份验证在源系统和目标系统之间无缝传输

    2. Data File Transfer - Data is first exported from the Source System as a file and then imported into the Target System

      数据文件传输-数据首先从源系统作为文件导出,然后导入目标系统

    3. Manual System Entries - Data is recreated manually via some sort of user interface in the Targeted System

      手动系统条目-通过目标系统中的某种用户界面手动重新创建数据

    What we will focus on in this article is the second scenario, Data File Transfer.

    我们将在本文中重点介绍第二种情况,即数据文件传输

    A common problem is there is no option available in the Source System to directly generate the Source File needed by Targeted System.

    一个常见的问题是,源系统中没有可用的选项来直接生成目标系统所需的源文件。

    Figure 1

    Hence, the Source File (Input File) needs to be further processed before it (Output File) can be recognized and used by the Targeted System.

    因此,在目标系统可以识别和使用源文件(输入文件)之前,需要对其进行进一步处理。

    Proposed Resolution

    拟议决议

    1. File Formats

    1.文件格式

    To ensure the data to be transferred successfully from the Source System to Targeted System, first we need to determine the file format of Input File.

    为了确保将数据成功地从源系统传输到目标系统,首先我们需要确定输入文件的文件格式。

    First of all, we need to determine what are the sections available in the Input File, most of the cases, there could be a Header section, a Detail section, with an optional Footer section. Each of the sections could be defined differently with different fixed width to define the data that being stored.

    首先,我们需要确定输入文件中可用的部分,在大多数情况下,可能会有一个Header部分,Detail部分以及一个可选的Footer部分。 可以用不同的固定宽度不同地定义每个部分,以定义要存储的数据。

    Similarly for the Output File, there could have a different format which come with a Header section, a Detail section or even with a Footer section, that's all depends on the Targeted System's requirement on what data format are accepted.

    类似地,对于输出文件,页眉节,详细节甚至页脚节可能具有不同的格式,这完全取决于目标系统对接受哪种数据格式的要求。

    The difference could be in term of:

    区别可能在于:

    i) Number of fields required

    i)必填字段数

    ii) The sequence of fields

    ii)字段顺序

    iii) The conversion of values

    iii)价值转换

    iv) The change of fixed width / delimiter

    iv)固定宽度/定界符的变化

    v) The conversion from fixed width to delimiter-separated, or vice versa

    v)从固定宽度到定界符分隔的转换,反之亦然

    vi) The use of Derived fields

    vi)派生字段的使用

    And hence, an Input & Output File Mapping documentation is useful to document all the requirements.

    因此,输入和输出文件映射文档对于记录所有需求很有用。

    2. File Converter

    2.文件 转换器

    A few things to consider:

    需要考虑的几件事:

    i) User interface consideration

    i)用户界面注意事项

    Do we need to build an User Interface to enable user to operate the program or we simply make it as simple as a Console Program or a Service that running at background?

    我们是否需要构建一个用户界面以使用户能够运行该程序,还是仅仅使其像在后台运行的控制台程序或服务一样简单?

    ii) Programming Languages and Tools

    ii)编程语言和工具

    What programming languages or tools to be used to generated the Output File?

    哪些编程语言或工具可用于生成输出文件?

    There are few options available, such as:

    可用的选项很少,例如:

    a) SQL Server Integration Services (SSIS)

    a)SQL Server集成服务(SSIS)

       We can create a Script Task (in C# or VB.NET) and write the logic within.

    我们可以创建一个脚本任务(在C#或VB.NET中)并在其中编写逻辑。

    b) a Compiled Executables, VB Script, PowerShell script etc

    b)编译的可执行文件,VB脚本,PowerShell脚本等

       Depends on the efficiency and convenience of developer, different programming languages and tools could be used to develop the File Convertor

    根据开发人员的效率和便利性,可以使用不同的编程语言和工具来开发文件转换器。

    iii) Delimiter and Text Qualifier

    iii)分隔符和文本限定符

    In case the Delimiter was being used in either Input File or Output File, do consider to use the Delimiter as unique as possible, which is different from the data content.

    如果在输入文件或输出文件中使用了定界符,请考虑尽可能使用定界符,这与数据内容不同。

    A Text Qualifier could be very useful to use in case inevitably the data also contains the character of delimiter as part of the content.

    如果数据不可避免地包含定界符字符作为内容的一部分,则使用文本限定符可能非常有用。

    iv) Other Consideration

    iv)其他考虑

    Other than that, we may think what features we should build into the File Converter, such as:

    除此之外,我们可能会考虑应该在文件转换器中内置哪些功能,例如:

    a) Data verification

    a)数据验证

       To verify the data checksum, size, format, etc.

    验证数据校验和,大小,格式等

    b) Derived fields

    b)派生字段

        To enable the File Converter to have capability to generate derived  fields based on certain logic, such as summation of fields, count of  records, etc.

    使文件转换器能够基于某些逻辑(例如字段总和,记录计数等)生成派生字段。

    3. Static or Dynamic Approach?

    3.静态还是动态方法?

    As what we can see from Figure in section: 1. File Formats above, it illustrates the Static mapping of Input File to Output File.

    正如我们在以下部分的图中所看到的:1.上面的文件格式,它说明了输入文件到输出文件的静态映射。

    The question that may arise is how can have a more dynamic approach to make it possible for the File Convertor to generate different Output File with different output formats?

    可能出现的问题是,如何有一种更动态的方法来使文件转换器生成具有不同输出格式的不同输出文件?

    In real programming world, it's really not a practical approach to hard code the logic in the codes. Therefore if there's a chance, the developers will try to make things to be configurable as possible as it can.

    在实际的编程世界中,将代码中的逻辑硬编码实际上不是一种实用的方法。 因此,如果有机会,开发人员将尝试使事情尽可能地可配置。

    I think to make this possible, we would need to have another Admin Executables (aka Template File Generator) in order to generate a Template File (we may also called it as a profile), so that when the File Converter starts to convert the Input File's content, it would actually read the configuration rules in the Template File and then do the conversion accordingly to generate the Output File.

    我认为要使其成为可能,我们将需要另一个Admin Executables(又名模板文件生成器)才能生成模板文件(我们也可以将其称为配置文件),以便在文件转换器开始转换输入时文件的内容,它将实际读取模板文件中的配置规则,然后进行相应的转换以生成输出文件。

    How can this Template File looks like?

    该模板文件的外观如何?

    Well, it depends on what programming languages and tools we are using. As a general guideline, it probably will be in file format such as XML or Config file.

    好吧,这取决于我们使用的编程语言和工具。 作为一般准则,它可能采用XML或Config文件之类的文件格式。

    Sample using XML:

    使用XML的示例:

    <?xml version="1.0"?>
    <setting>
       <ver>1.0</ver>
       <input>
            <format>fixed width</format>
            <header>
                <code>header</code>
                <isdetail>false</isdetail>
                <field>
                    <code>1</code>
                    <name>Record Identifier</name>
                    <type>Char</type>
                    <size>34</size>
                    <start>1</start>
                    <end>34</end>
                    <remarks></remarks>
                </field>
            </header>
            <header>
                <code>detail</code>
                <isdetail>true</isdetail>
                <field>
                    <code>SubmitDate</code>
                    <name>Submission Date</name>
                    <type>Date</type>
                    <format>YYYYMMDD</format>
                    <size>8</size>
                    <start>1</start>
                    <end>8</end>
                    <remarks></remarks>
                </field>            
                <field>
                    <code>SerialNo</code>
                    <name>Serial Number</name>
                    <type>Numeric</type>
                    <size>9</size>
                    <start>9</start>
                    <end>17</end>
                    <remarks></remarks>
                </field>
                <field>
                    <code>CustName</code>
                    <name>Customer Name</name>
                    <type>Char</type>
                    <size>20</size>
                    <start>18</start>
                    <end>37</end>
                    <remarks></remarks>
                </field>
            </header>
       </input>
       <output>
            <format>fixed width</format>
            <header>
                <code>AcctList</code>
                <remarks>This is the Account List</remarks>
                <printremarks>false</printremarks>
                <isdetail>true</isdetail>
                <field>
                    <code>SubmitDate</code>
                    <source>
                        <code>detail|SerialNo</code>
                    </source>
                    <trim>false</trim>                    
                    <name>Submission Date</name>
                    <type>Date</type>
                    <format>MM/DD/YYYY</format>
                    <size>10</size>
                    <start>1</start>
                    <end>10</end>
                    <align>right</align>
                    <remarks></remarks>
                </field>            
                <field>
                    <code>AppCode</code>
                    <source>
                        <code>detail|SerialNo</code>
                    </source>                    
                    <trim>true</trim>
                    <formula></formula>                    
                    <name>Application Code</name>
                    <type>Numeric</type>
                    <size>9</size>
                    <start>11</start>
                    <end>19</end>
                    <align>left</align>
                    <remarks></remarks>
                </field>
            </header>
            <header>
                <code>AcctTotal</code>
                <remarks>This is the Account Total</remarks>
                <printremarks>true</printremarks>
                <isdetail>false</isdetail>
                <field>
                    <code>AppCode</code>
                    <source>
                        <code>detail|SerialNo2</code>
                    </source>
                    <trim>true</trim>
                    <formula>{SUM}(1)</formula>
                    <name>Total Application</name>
                    <type>Numeric</type>
                    <format>#,#0</format>
                    <size>7</size>
                    <start>1</start>
                    <end>7</end>
                    <align>right</align>
                    <remarks></remarks>
                </field>
            </header>
       </output>
    </setting> 
    

    To give a sample to reading above template using C# codes, we can customize this sample:

    为了提供使用C#代码阅读上述模板的示例,我们可以自定义此示例:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    using System.Xml;
    using System.IO;
    
    
    namespace MyFileConvertor
    {
        class FileConvertor
        {
            private XmlDocument doc;
    
            public String TemplateFileVersion { get; set; }
            public Input Input { get; set; }
            public Output Output { get; set; }
    
            public FileConvertor(String TemplatePath)
            {
                doc = new XmlDocument();
                Input = new Input();
                Output = new Output();
    
                doc.Load(TemplatePath);
                TemplateFileVersion = doc.SelectSingleNode("setting/ver").InnerText;
                
                Input.Format = doc.SelectSingleNode("setting/input/format").InnerText;
    
                XmlNodeList inputHeaders = doc.SelectNodes("setting/input/header");
                foreach (XmlNode inputHeader in inputHeaders)
                {
                    InputHeader hdr = new InputHeader();
                    hdr.Code = inputHeader.SelectSingleNode("code").InnerText;
                    hdr.isDetail = inputHeader.SelectSingleNode("isdetail").InnerText == "true" ? true : false;
    
                    XmlNodeList inputFields = inputHeader.SelectNodes("field");
                    foreach (XmlNode inputField in inputFields)
                    {
                        Field fld = new Field();
                        fld.Code = inputField.SelectSingleNode("code").InnerText;
                        fld.Name = inputField.SelectSingleNode("name").InnerText;
                        fld.Type = inputField.SelectSingleNode("type").InnerText;
                        fld.Format = getNodeText(inputField.SelectSingleNode("format"));
                        fld.Size = Convert.ToInt32(inputField.SelectSingleNode("size").InnerText);
                        fld.Start = Convert.ToInt32(inputField.SelectSingleNode("start").InnerText);
                        fld.End = Convert.ToInt32(inputField.SelectSingleNode("end").InnerText);
                        fld.Remarks = inputField.SelectSingleNode("remarks").InnerText;
                        hdr.Fields.Add(fld);
                    }
                    Input.InputHeaders.Add(hdr);
                }
    
                Output.Format = doc.SelectSingleNode("setting/output/format").InnerText;
    
                XmlNodeList outputHeaders = doc.SelectNodes("setting/output/header");
                foreach (XmlNode outputHeader in outputHeaders)
                {
                    OutputHeader hdr = new OutputHeader();
                    hdr.Code = outputHeader.SelectSingleNode("code").InnerText;
                    hdr.Remarks = outputHeader.SelectSingleNode("remarks").InnerText;
                    hdr.PrintRemarks = outputHeader.SelectSingleNode("printremarks").InnerText;
                    hdr.isDetail = outputHeader.SelectSingleNode("isdetail").InnerText == "true" ? true : false;
    
                    XmlNodeList outputFields = outputHeader.SelectNodes("field");
                    foreach (XmlNode outputField in outputFields)
                    {
                        Field fld = new Field();
                        fld.Code = outputField.SelectSingleNode("code").InnerText;
                        fld.Name = outputField.SelectSingleNode("name").InnerText;
                        fld.Type = outputField.SelectSingleNode("type").InnerText;
                        fld.Format = getNodeText(outputField.SelectSingleNode("format"));
                        fld.Size = Convert.ToInt32(outputField.SelectSingleNode("size").InnerText);
                        fld.Start = Convert.ToInt32(outputField.SelectSingleNode("start").InnerText);
                        fld.End = Convert.ToInt32(outputField.SelectSingleNode("end").InnerText);
                        fld.Alignment = outputField.SelectSingleNode("align").InnerText;
                        fld.Remarks = outputField.SelectSingleNode("remarks").InnerText;
    
                        fld.Formula = getNodeText(outputField.SelectSingleNode("formula"));
                        fld.IsTrim = getNodeText(outputField.SelectSingleNode("trim")) == "true" ? true : false;
    
                        XmlNodeList outputFieldCodes = outputField.SelectNodes("source");
                        foreach (XmlNode outputFieldCode in outputFieldCodes)
                        {
                            Source src = new Source();
                            src.Codes.Add(outputFieldCode.SelectSingleNode("code").InnerText);
                            fld.Sources.Add(src);
                        }
                        
                        hdr.Fields.Add(fld);
                    }
                    Output.OutputHeaders.Add(hdr);
                }
    
    
            }
            public String getNodeText(XmlNode node)
            {
                try
                {
                    return node.InnerText;
                }
                catch (Exception)
                {
                    return "";
                }
            }
            public String getNodeText(XmlNode node, String defaultReturn)
            {
                try
                {
                    return node.InnerText;
                }
                catch (Exception)
                {
                    return defaultReturn;
                }
            }
            
        }
    
        class Input
        {
            public String Format { get; set; }
            public List<InputHeader> InputHeaders;
    
            public Input()
            {
                InputHeaders = new List<InputHeader>();
            }
        }
    
        class InputHeader
        {
            public String Code { get; set; }
            public Boolean isDetail { get; set; }
            public List<Field> Fields;
    
            public InputHeader()
            {
                Fields = new List<Field>();
            }
        }
    
        class Output
        {
            public String Format { get; set; }
            public List<OutputHeader> OutputHeaders;
    
            public Output()
            {
                OutputHeaders = new List<OutputHeader>();
            }
        }
    
        class OutputHeader
        {
            public String Code { get; set; }
            public String Remarks { get; set; }
            public String PrintRemarks { get; set; }
            public Boolean isDetail { get; set; }
            public List<Field> Fields;
    
            public OutputHeader()
            {
                Fields = new List<Field>();
            }
        }
    
        class Field
        {
            public String Code { get; set; }
    
            public Boolean IsTrim { get; set; }
            public String Formula { get; set; }
            
            public String Name { get; set; }
            public String Type { get; set; }
            public String Format { get; set; }
            public int Size { get; set; }
            public int Start { get; set; }
            public int End { get; set; }
            public String Alignment { get; set; }
            public String Remarks { get; set; }
            
            public List<Source> Sources;
    
            public Field()
            {
                Sources = new List<Source>();
            }
        }
    
        class Source
        {
            public List<String> Codes;
            public Source()
            {
                Codes = new List<string>();
            }
        }
    
    } 
    

    In general, we can build a much more complex rules in the Template File to meet the requirements.

    通常,我们可以在模板文件中构建更复杂的规则来满足要求。

    So, the preferred Programming Languages and Tools will play a crucial role to read the settings from the Template File, which eventually based on the logic within to generate the Output File.

    因此,首选的编程语言和工具将扮演至关重要的角色,以从模板文件中读取设置,而模板文件最终将基于其中的逻辑来生成输出文件。

    This may not be an easy task but it's worth a try :)

    这可能不是一件容易的事,但是值得一试:)

    Conclusion:

    结论:

    As a whole, we need to ensure the data accuracy and integrity are take into consideration.

    总体而言,我们需要确保考虑到数据的准确性和完整性。

    Some of other concerns:

    其他一些问题:

    1. We can build an application log to track the activities of during the file conversion process.

    1.我们可以构建一个应用程序日志来跟踪文件转换过程中的活动。

    2. We can embed the security algorithms to protect our data if necessary.

    2.如果需要,我们可以嵌入安全算法来保护我们的数据。

    3. Automate the whole process by integrate it as part of the ETL (Extract, Transform and Load) or Windows Scheduled Task process.

    3.通过将其集成为ETL(提取,转换和加载)或Windows计划任务过程的一部分来自动化整个过程。

    4. How the Template File to be updated/ stored if the File Converter had been deployed to many computer machines?

    4.如果文件转换器已部署到许多计算机上,如何更新/存储模板文件?

    More references: 更多参考:

    Script Task

    脚本任务

    https://docs.microsoft.com/en-us/sql/integration-services/control-flow/script-task

    https://docs.microsoft.com/zh-cn/sql/integration-services/control-flow/script-task

    Text Import Wizard

    文字汇入精灵

    https://support.office.com/en-us/article/Text-Import-Wizard-c5b02af6-fda1-4440-899f-f78bafe41857?ui=en-US&rs=en-US&ad=US&fromAR=1

    https://support.office.com/zh-CN/article/Text-Import-Wizard-c5b02af6-fda1-4440-899f-f78bafe41857?ui=zh-CN&rs=zh-CN&ad=US&fromAR=1

    (Read Step 2 of 3 for explanation of Delimiter and Text Qualifier)

    (阅读第2步(共3步)以了解分隔符和文本限定符)

    翻译自: https://www.experts-exchange.com/articles/29620/Converting-a-fixed-width-delimiter-separated-text-file-content-Input-File-to-another-formatted-text-file-Output-File-What-approach-to-use.html

    以分隔符分隔的文本文件

    展开全文
  • 有时我们会处理一些带分隔符数据文本文件。例如,使用”,”分隔的数据,下面介绍下使用linq读取分隔符文本文件的方法
  • 在 因此,如果我定义一个替换分隔符的函数:In [285]: def foo(astr): ...: return astr.replace(':',',').replace(';',',') ...: ...: In [286]: np.genfromtxt([foo(a) for a in txt],delimiter=',',dtype=None, ...

    In [280]: txt=[' 0 : 16, 250 : 1 : 0.053 :RIG : DIS : 1 : 48, 220; 2

    ...: : 42, 241; 2 : 43, 251; 3 : 25, 266; 1 : 36, 287; 2 '

    ...: ]

    In [282]: np.genfromtxt(txt,delimiter=':',dtype=None, encoding=None)

    Out[282]:

    array((0, ' 16, 250 ', 1, 0.053, 'RIG ', ' DIS ', 1, ' 48, 220; 2 ', ' 42, 241; 2 ', ' 43, 251; 3 ', ' 25, 266; 1 ', ' 36, 287; 2'),

    dtype=[('f0', '

    这是一个有11个字段的结构化数组,它混合了整数、字符串和浮点数。这是因为dtype=None告诉它为每个列推断数据类型。在

    在,上拆分将生成一个7列数组(这里是1d,因为只有一个输入行,但是如果有更多的输入行,则是2d):

    ^{pr2}$

    但请注意,这都是弦乐。在

    genfromtxt不接受多个分隔符,但它接受来自任何为其提供行的输入。在

    因此,如果我定义一个替换分隔符的函数:In [285]: def foo(astr):

    ...: return astr.replace(':',',').replace(';',',')

    ...:

    ...:

    In [286]: np.genfromtxt([foo(a) for a in txt],delimiter=',',dtype=None, encoding

    ...: =None)

    Out[286]:

    array((0, 16, 250, 1, 0.053, 'RIG ', ' DIS ', 1, 48, 220, 2, 42, 241, 2, 43, 251, 3, 25, 266, 1, 36, 287, 2),

    dtype=[('f0', '

    现在我已经将输入分解成一个有23个字段的结构化数组,同样是int、float和(更小)字符串的混合。在

    genfromtxt让我定义一个dtype,它可以将子字段组合在一起。在

    例如,尝试处理前6列:In [298]: dt = np.dtype([('f0','i'),('f1','i',2),('f2','i'),('f3','i'),('f4','U3

    ...: ')])

    In [299]: np.genfromtxt([foo(a) for a in txt],delimiter=',',dtype=dt, encoding=N

    ...: one,usecols=range(6))

    Out[299]:

    array((0, [ 16, 250], 1, 0, 'RIG'),

    dtype=[('f0', '

    我已经将'16,250'分组到一个包含2个整数的字段中。后来的“48220;2,42241;2”可以嵌套3个字段(由“;”定义),并嵌套在2,2和1子字段中。在

    genfromtxt接受另一种形式的定界符-固定字段宽度。在

    速度方面,genfromtxt并没有比你自己的滚动有任何改进。它仍然需要读取每一行,将其拆分,并将值收集到一个列表列表中。最后它将其转换为一个数组。在

    pandas有一个更快的csv读卡器,但这种情况可能太复杂而无法使用。engine=python参数强制它使用较慢的全python版本。在

    展开全文
  • I Want to separate a text file with separator.ExampleBEGIN:VCARDVERSION:2.1X-TIMES_CONTACTED:2X-LAST_TIME_CONTACTED:1438878121912N:SomeOneFN:...TEL;CELL:111122222TEL;CELL:333334444PHOTO;...

    I Want to separate a text file with separator.

    Example

    BEGIN:VCARD

    VERSION:2.1

    X-TIMES_CONTACTED:2

    X-LAST_TIME_CONTACTED:1438878121912

    N:SomeOne

    FN:...

    TEL;CELL:111122222

    TEL;CELL:333334444

    PHOTO;ENCODING=BASE64;JPEG:/...CfbNQMCwwBk1ZtrKadgEXNNC2P/Z

    END:VCARD

    BEGIN:VCARD

    VERSION:2.1

    N:Another

    FN:Victim

    TEL;CELL:888888888888

    TEL;CELL:99999999

    END:VCARD

    with method : SplitFile("c:\test\test.vcf", "END:VCARD", "c:\test\output");

    解决方案

    import java.io.File;

    import java.io.FileInputStream;

    import java.io.IOException;

    import java.nio.file.Files;

    import java.nio.file.Path;

    import java.nio.file.Paths;

    import java.nio.file.StandardOpenOption;

    import org.apache.commons.io.FilenameUtils;

    public class MainClass {

    public static void main(String[] args) {

    SplitFile("c:\\test\\test.vcf", "END:VCARD", "c:\\test\\output");

    }

    private static void SplitFile(String fileName, String seperateChars, String destFolder) {

    try {

    Path p = Paths.get(fileName);// or

    // FileSystems.getDefault().getPath(fileName)

    String lines = new String(Files.readAllBytes(p));

    String fName = FilenameUtils.getBaseName(p.toString());

    String fExt = FilenameUtils.getExtension(p.toString());

    int fCounter = 0;

    int beginMark = 0;

    int endMark = 0;

    destFolder = FilenameUtils.normalizeNoEndSeparator(destFolder);

    while ((endMark = lines.indexOf(seperateChars, beginMark)) >= 0) {

    fCounter++;

    String buf = lines.substring(beginMark, endMark + seperateChars.length());

    String fOut = String.format("%s\\%s%05d.%s", destFolder, fName, fCounter, fExt);

    System.out.println(fOut);

    beginMark = endMark + seperateChars.length();

    Files.write(Paths.get(fOut), buf.getBytes(), StandardOpenOption.CREATE);

    endMark = -1;

    }

    System.out.println("Done!");

    } catch (IOException e) {

    e.printStackTrace();

    }

    }

    }

    展开全文
  • python 读取竖线分隔符文本方法更新时间:2018年12月20日 13:59:26 作者:跑马的汉子_今天小编就为大家分享一篇python 读取竖线分隔符文本方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看...

    python 读取竖线分隔符的文本方法

    更新时间:2018年12月20日 13:59:26 作者:跑马的汉子_

    今天小编就为大家分享一篇python 读取竖线分隔符的文本方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

    如下:

    data = pd.read_csv('20180201.txt',sep = '|',dtype = 'str')

    以上代码意思是:

    1,读取本工作路径下的20180201.txt文件

    2,使用'|'分割不同的列

    3,所有列数据类型为字符串'str'

    以上这篇python 读取竖线分隔符的文本方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

    相关文章

    bcimg0.png

    在本篇文章里小编给大家整理的是关于Python猜数字算法题详解内容,有兴趣的朋友们可以学习下。2020-03-03

    bcimg1.png

    今天小编就为大家分享一篇Anaconda2下实现Python2.7和Python3.5的共存方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2018-06-06

    bcimg2.png

    这篇文章主要介绍了python使用 cx_Oracle 模块进行查询操作,结合实例形式分析了Python使用cx_Oracle模块进行数据库的基本连接、查询、输出等相关操作技巧,需要的朋友可以参考下2019-11-11

    bcimg3.png

    这篇文章主要介绍了Python使用sort和class实现的多级排序功能,涉及Python基于面向对象的元素遍历、列表排序、添加等相关操作技巧,需要的朋友可以参考下2018-08-08

    bcimg4.png

    这篇文章主要介绍了bluepy 一款python封装的BLE利器简单介绍,bluepy 是github上一个很好的蓝牙开源项目, 其主要功能是用python实现linux上BLE的接口。,需要的朋友可以参考下2019-06-06

    bcimg5.png

    这篇文章主要介绍了如何基于Python + requests实现发送HTTP请求,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下2020-01-01

    bcimg6.png

    这篇文章主要介绍了python matplotlib.pyplot.plot()参数用法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2020-04-04

    bcimg7.png

    这篇文章主要介绍了python实现备份目录的方法,实例总结了Python实现备份目录的三种常用技巧,具有一定参考借鉴价值,需要的朋友可以参考下2015-08-08

    bcimg8.png

    collections是Python内建的一个集合模块,提供了许多有用的集合类。下面这篇文章主要给大家介绍了关于Python中collections模块的基本使用,文中通过示例代码介绍的非常详细,需要的朋友可以参考下2018-12-12

    bcimg9.png

    这篇文章主要介绍了用python检测lvs real server状态的示例,大家参考使用吧2014-01-01

    最新评论

    展开全文
  • 以上这篇python 读取竖线分隔符文本方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持软件开发网。 您可能感兴趣的文章:python处理两种分隔符的数据集方法python针对不定分隔符切割...
  • 正如其他两个答案所指出的那样,你必须使用std :: getline,但这就是我要做的:if (std::getline(is, zipcode, ',') &&std::getline(is, city, ',') &&std::getline(is, state)){d.zipCode = std::...
  • VC读写指定分隔符的UNICODE文本文件

    千次阅读 2012-10-24 16:55:51
     Unicode文本文件以0xff、0xfe两个字节开头,后面是Unicode文本内容。在创建文件的时候先向文件写入0xff、0xfe两个字节,然后再写入Unicode字符串即可;在读文件的时候,先读出前两字节,然后将后面数据直接读入...
  • 本节书摘来自异步社区《R数据可视化手册》一书...1.3 加载分隔符式的文本文件 问题如何加载一个分隔符式的文本文件中的数据? 方法加载逗号分隔组(CSV)数据的最常用方法是: data <-read.csv("datafile.csv")...
  • 本节书摘来异步社区《R数据可视化手册》一书中...1.3 加载分隔符式的文本文件 问题如何加载一个分隔符式的文本文件中的数据? 方法加载逗号分隔组(CSV)数据的最常用方法是: data <-read.csv("datafile.csv")...
  • #将仿真数据分隔符文本文件方式写入 #使用read.delim函数读入带分隔符的数据 #使用read.delim函数读入带分隔符的数据(指定分隔符) #read.delim函数语法 read.delim(file, header=TRUE, sep=’\t’) ...
  • Python基于分隔符文本数据存取

    千次阅读 2021-02-13 16:59:42
    常见的存储文本数据的文本文件主要有两种:一种是基于分隔符的文本数据文件,这里分隔符可以是空格、逗号、单双引号、TAB制表符等,使用分隔符的目的是将同一行数据的不同列(字段)分开,便于统一的规律读写;...
  • 逐行读取文本文件 分隔符 c#

    热门讨论 2008-05-21 08:42:15
    利用vs2005的filestream功能逐行读取文本文件,并有效地解决了由于分隔符复杂而造成的小问题。
  • 详解hive的列分隔符和行分隔符的使用

    万次阅读 多人点赞 2018-05-13 10:42:40
    一般导入的文本数据字段分隔符多为逗号分隔符或者制表符(但是实际开发中一般不用着这种容易在文本内容中出现的的符号作为分隔符),当然也有一些别的分隔符,也可以自定义分隔符。有时候也会使用hive默认的分隔符来...
  • 这是一个小工具程序,主要功能是分隔符文本文件或定长文本文件的格式检查和简单加工,具体包括: 1) 文件格式的检查; 2)分页预览与编辑。提供文本视图和表格视图,在表格视图中可删除、插入、复制行或列。 3)...
  • 在使用如左图插件来生成文本文件时,往往需要用到分隔符来区分列内容,通过情况下的键盘上可以看到的特殊字符就可以当作通用的分隔符了,如 |;, |^ 等等;  但如果以上情形还不满足的话,可以考虑用ASCII码中的...
  • R:从带分隔符文本文件导入数据

    万次阅读 2014-10-27 13:35:15
     其中,file是一个带分隔符的ASCII文本文件,header是一个表明首行是否包含了变量名的逻辑值(TRUE或FALSE),sep用来指定分隔数据的分隔符,rows.names是一个可选参数,用指定一个或多个表示行标识符的变量。
  • 1、示例文本 a1-b1-c1 a2-b2-c2 a3-b3-c3 ...共有三行,自定义的分隔符是“-”。 2、粘贴进excel里的一个单元格 excel识别文本里的换行,自动分成三个单元格。 3、excel数据分列,指定分隔符
  • 2.3.2 从带分隔符文本文件导入数据(read.table()) 你可以使用read.table()从带分隔符文本文件中导入数据。此函数可读入一个表格格式的文件并将其保存为一个数据框。表格的每一行分别出现在文件中每一行。其语法...
  • 里面的分隔符有逗号“,” ,空格“ ”,括号“[” “]”。 在查看很博文后,发现使用简单的函数无法完成想要的数据读取。 这里介绍一种MATLAB自带的数据导入功能,最方便的是可以自动生成所需要的代码。 下图读取...
  • 获取一个带分隔符文本文件并用它填充一个数据库表。
  • 【Python】使用pandas读取特殊字符作为分隔符文本数据 金融民工在日常工作中遇到的小问题,分享一下~(大佬请绕道) import pandas as pd df = pd.read_table(file_path, sep='$$', engine='python', header=0...
  • C++按行读取文本文件,并通过分隔符取值!
  • Hive使用属于field表示替换默认分隔符的字符。 分隔符 描述 \n 换行分隔符,可用于分割记录 ^A 用于分隔字段, ^B 用于分隔ARRAY或者STRUCT中的元素,或用于MAP中键值对之间的分隔 ^C ...
  • Java文件分隔符

    千次阅读 2018-12-12 15:32:19
     指的是文件路径的分隔符,例如Linux/Mac OS 中,文件路径:‎⁨/home/usr 中的"/",或者Windows系统文件路径C:\Program Files\backup 中的"\" File.pathSeparatorChar  指的是用来分隔连续...
  • 通常情况下,逗号分隔的文件将使用逗号作为分隔符并在文本单元格中使用。 在后一种情况下,单元格通常被双引号(“like this”)或其他一些限定符包围,指示其中的逗号作为分隔符将被忽略。 MATLAB 在 READTABLE...
  • 需求:mapreduce案例之统计文本文件中单词出现的次数(单词空格作为分隔符) D盘原始文件如下: WordCountRunner类 WordCountMapper类 WordCountReducer类 启动测试~ 此时会报错!原因是输出路径...
  • 此函数的作用类似于 csv 文件上的 xlsread,但适用于任何带分隔符文本文件。 与 textscan 或 csvread 不同,delimread 无需格式字符串即可读取文本和数字数据。 可以用Excel A1格式指定范围,也可以用开始/结束行...
  • 目的:要统计文本文件中第一行中这个16进制分隔符的个数,要用linux命令 或者shell脚本 最好越简洁越好 ![图片说明](https://img-ask.csdn.net/upload/201906/21/1561117190_622453.jpg) 先谢谢大虾们

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 174,805
精华内容 69,922
关键字:

以分隔符分隔的文本文件