Skip to main content
Solved

Text Line - End of Line


Forum|alt.badge.img

Hello,

I'm writing out to a text file with Line Termination: Windows. But when I open the text file in Notepad++, the end of line is Unix, except the last line which is Windows:

25.000000000000 LF

0.000000000000 LF

0.000000000000 LF

-25.000000000000 LF

400012.5 LF

1299987.5 CRLF

I also checked in TextPad - that's showing "Unknown" end of line. When I open the text file in Notepad, the line breaks are ignored:

25.000000000000 0.000000000000 0.000000000000 -25.000000000000 400012.5 1299987.5

Could you please help me?

Thanks

Best answer by david_r

I'm sure there are other ways, but try a PythonCaller with the following code just before the writer:

import fmeobjects
def FeatureProcessor(feature):
    text = feature.getAttribute('text_line_data')
    if text:
        feature.setAttribute('text_line_data''\r\n'.join(text.split()))

I repeat that if you send one single feature to the text writer, and that feature contains a string that looks like this:

This is a<LR>multiline text<LR>text file

Then the behavior you observe is exactly as predicted, because the line termination settings only apply AFTER each feature. But the Python code above will fix it for you.

View original
Did this help you find an answer to your question?

13 replies

itay
Supporter
Forum|alt.badge.img+17
  • Supporter
  • September 2, 2016

Hi @honkovam, had a similar situation some time ago.

I remember using a notepad++ to find out what the line termination actually looks like in that application and redo that specific line termination in FME. It was also a case of setting the correct encoding value in the writer.

If I remember correctly see View>Show Symbol>Shoe All Characters in Notepad++

Hope this helps.


david_r
Celebrity
  • September 2, 2016

Could it be that you're writing a single feature where text_line_data contains LF characters?


Forum|alt.badge.img
  • Author
  • September 2, 2016

Hello @itay, @david_r,

Without showing the end of line symbol my file looks just fine in Notepad++:

But as I said - I wanted Windows end of line (CRLF) and I ended up with a mixture - this is what my text file looks like in Notepad++ if I tick show end of line symbol:

I have attached my text file: hp.txt

any idea? thanks


david_r
Celebrity
  • September 2, 2016
honkovam wrote:

Hello @itay, @david_r,

Without showing the end of line symbol my file looks just fine in Notepad++:

But as I said - I wanted Windows end of line (CRLF) and I ended up with a mixture - this is what my text file looks like in Notepad++ if I tick show end of line symbol:

I have attached my text file: hp.txt

any idea? thanks

How many features did you write for those 6 lines?

 

 


itay
Supporter
Forum|alt.badge.img+17
  • Supporter
  • September 2, 2016

Yes, I have one....you need to define 2 types of line terminations...


Forum|alt.badge.img
  • Author
  • September 2, 2016
david_r wrote:
How many features did you write for those 6 lines?

 

 

Hello, just one - it's supposed to be a TFW file for a raster.

 

The end of line is not working correctly - l keep switching it from Unix to Windows but no effect whatsoever - always shows as Unix.

 

 


Forum|alt.badge.img
  • Author
  • September 2, 2016
itay wrote:

Yes, I have one....you need to define 2 types of line terminations...

@itay

 

I think the text writer ignores the End of Line - I keep switching it to Windows / Unix and always end up with LF (Unix) :(

 

 

If I set the end of line to Windows, all lines will show incorrectly as LF (Unix), only the last line will show correctly as Windows CRLF

Any idea why?

 

 


itay
Supporter
Forum|alt.badge.img+17
  • Supporter
  • September 2, 2016
honkovam wrote:
Hello, just one - it's supposed to be a TFW file for a raster.

 

The end of line is not working correctly - l keep switching it from Unix to Windows but no effect whatsoever - always shows as Unix.

 

 

I never experienced a difficulty with FME produced world files, but I guess that it depends on the application you intend to use them with

 

 


david_r
Celebrity
  • September 2, 2016
honkovam wrote:
Hello, just one - it's supposed to be a TFW file for a raster.

 

The end of line is not working correctly - l keep switching it from Unix to Windows but no effect whatsoever - always shows as Unix.

 

 

If you write one single feature that contains LF-only newlines, FME won't automatically convert them to CRLF for you. You'll have to do it yourself, e.g. using a StringReplacer.

 

The Writer line termination settings are per feature.

itay
Supporter
Forum|alt.badge.img+17
  • Supporter
  • September 2, 2016
honkovam wrote:
@itay

 

I think the text writer ignores the End of Line - I keep switching it to Windows / Unix and always end up with LF (Unix) :(

 

 

If I set the end of line to Windows, all lines will show incorrectly as LF (Unix), only the last line will show correctly as Windows CRLF

Any idea why?

 

 

Not really....seems like it should work....but I do remember ending up creating the line terminations myself in an aggregator and not using the writer for it.

 

 


Forum|alt.badge.img
  • Author
  • September 2, 2016
itay wrote:
I never experienced a difficulty with FME produced world files, but I guess that it depends on the application you intend to use them with

 

 

Hi @itay,

 

the issue is not producing usable world files. It's producing ANY text file (using TEXT file writer) with correct Windows end of line. I set it as Windows end of line in my workbench but FME ignores this setting and produces Unix :(

 

 


david_r
Celebrity
  • Best Answer
  • September 2, 2016

I'm sure there are other ways, but try a PythonCaller with the following code just before the writer:

import fmeobjects
def FeatureProcessor(feature):
    text = feature.getAttribute('text_line_data')
    if text:
        feature.setAttribute('text_line_data''\r\n'.join(text.split()))

I repeat that if you send one single feature to the text writer, and that feature contains a string that looks like this:

This is a<LR>multiline text<LR>text file

Then the behavior you observe is exactly as predicted, because the line termination settings only apply AFTER each feature. But the Python code above will fix it for you.


Forum|alt.badge.img
  • Author
  • September 2, 2016
david_r wrote:

I'm sure there are other ways, but try a PythonCaller with the following code just before the writer:

import fmeobjects
def FeatureProcessor(feature):
    text = feature.getAttribute('text_line_data')
    if text:
        feature.setAttribute('text_line_data''\r\n'.join(text.split()))

I repeat that if you send one single feature to the text writer, and that feature contains a string that looks like this:

This is a<LR>multiline text<LR>text file

Then the behavior you observe is exactly as predicted, because the line termination settings only apply AFTER each feature. But the Python code above will fix it for you.

hi @david_r,

 

 

thanks for the python solution! that worked! much appreciated.. 

 


Cookie policy

We use cookies to enhance and personalize your experience. If you accept you agree to our full cookie policy. Learn more about our cookies.

 
Cookie settings