Problem with reading pasted text in terminal - python

I'm reading text in terminal with
description = raw_input()
It works if I write the text and press enter. The problem is when I paste the text from somewhere with Ctrl+Shift+V or with right click + paste. My program immediately ends, description contains only part of the text (I can see it in database).
Do you know how to do this so paste works? I'm using xfce4-terminal in Ubuntu.
thank you

Make sure that your pasted text doesn't contain any embedded control characters (such as a newline), which could end the input.

Try this, lifted it from a google search. You have to enter 3 blank lines after your paste, but of course, if there are 3 blank lines in your paste, then it won't work. The concept is there though, you just need to pick an end control character. Thanks for the comments catching that guys.
print "paste quote:"
emptycount = 0
lines = []
while emptycount < 2:
t = raw_input()
if len(t) == 0:
emptycount +=1
else:
emptycount=0
lines.append(t)
lines.append("\n")
print " ".join(lines[:-1])

Related

TabError: inconsistent use of tabs and spaces in indentation. I can't spot where [duplicate]

This question already has answers here:
I'm getting an IndentationError. How do I fix it?
(6 answers)
Closed last month.
I'm trying to create an application in Python 3.2 and I use tabs all the time for indentation, but even the editor changes some of them into spaces and then print out "inconsistent use of tabs and spaces in indentation" when I try to run the program.
How can I change the spaces into tabs? It's driving me crazy.
import random
attraktioner = ["frittfall","bergodalbana","spökhuset"]
class Nojesfalt:
def __init__(self, attraktion):
self.val = attraktion
self.langd = 0
self.alder = 0
#längdgräns för fritt fall
def langdgrans(self):
print("")
self.langd = int(input("Hur lång är du i cm? "))
if self.langd < 140:
print("tyvärr, du är för kort, prova något annat")
return 0
elif self.langd >= 140:
print("håll dig hatten, nu åker vi!")
print(" ")
return 1
#åldersgräns för spökhuset
def aldersgrans(self):
print("")
self.alder = int(input("Hur gammal är du? "))
if self.alder < 10:
print("tyvärr, du är för ung, prova något annat")
return 0
elif self.alder >= 10:
print("Gå in om du törs!")
print(" ")
return 1
#åker attraktion frittfall lr bergodalbana
def aka(self):
print("")
print(self.val)
tal = random.randint(0,100)
if tal < 20:
print("åkturen gick åt skogen, bättre lycka nästa gång")
elif tal >= 20:
print("jabbadabbbadoooooooo")
return 1
#går i spökhuset
def aka1(self):
print("")
print(self.val)
tal = random.randint(0,100)
if tal < 20:
print("du är omringad av spöken och kan inte fortsätta") return 0
elif tal >= 20:
print("Buhuuuuuu, buuuhuuuu")
return 1
#programkod
print("Välkommen till nöjesfältet, vad vill du göra?")
print(" ")
while 1:
vald_attr = input("Vad vill du göra?\n1. frittfall\n2. bergodalbana\n3. spökhuset\n4. Avsluta\n")
if vald_attr == "1":
val = Nojesfalt(attraktioner[0])
if val.langdgrans() == 1:
val.aka()
elif vald_attr == "2":
val = Nojesfalt(attraktioner[1])
val.aka()
elif vald_attr == "3":
val = Nojesfalt(attraktioner[2])
if val.aldersgrans() == 1:
val.aka1()
elif vald_attr == "4":
break
Don't use tabs.
Set your editor to use 4 spaces for indentation.
Make a search and replace to replace all tabs with 4 spaces.
Make sure your editor is set to display tabs as 8 spaces.
Note: The reason for 8 spaces for tabs is so that you immediately notice when tabs have been inserted unintentionally - such as when copying and pasting from example code that uses tabs instead of spaces.
For VSCode users
Ctrl+Shift+P or View->Command Palette.
Type
>Convert Indentation to Spaces
press Enter.
Using the autopep8 command below fixed it for me:
autopep8 -i my_file.py
Documentation for autopep8 linked here.
With the IDLE editor you can use this:
Menu Edit → Select All
Menu Format → Untabify Region
Assuming your editor has replaced 8 spaces with a tab, enter 8 into the input box.
Hit select, and it fixes the entire document.
When using the sublime text editor, I was able to select the segment of my code that was giving me the inconsistent use of tabs and spaces in indentation error and select:
view > indentation > convert indentation to spaces
which resolved the issue for me.
It is possible to solve this problem using notepad++ by replacing Tabs with 4 Spaces:
Choose Search -> Find... or press Ctrl + F
Select the Replace tab
In the box named Search Mode choose Extended(\n, \r, \t, \0, \x...)
In the field Find what : write \t
In the field Replace with : press Space 4 times. Be sure that there is nothing else in this field.
Click on the button Replace All
Generally, people prefer indenting with space. It's more consistent across editors, resulting in fewer mismatches of this sort. However, you are allowed to indent with tab. It's your choice; however, you should be aware that the standard of 8 spaces per tab is a bit wide.
Concerning your issue, most probably, your editor messed up. To convert tab to space is really editor-dependent.
On Emacs, for example, you can call the method 'untabify'.
On command line, you can use a sed line (adapt the number of spaces to whatever pleases you):
sed -e 's;\t; ;' < yourFile.py > yourNedFile.py
If you are using Sublime Text for Python development, you can avoid the error by using the package Anaconda. After installing Anaconda, open your file in Sublime Text, right click on the open spaces → choose Anaconda → click on autoformat. Done. Or press Ctrl + Alt + R.
Sublime Text 3
In Sublime Text, WHILE editing a Python file:
Sublime Text menu > Preferences > Settings - Syntax Specific :
Python.sublime-settings
{
"tab_size": 4,
"translate_tabs_to_spaces": true
}
I recently had the same problem and found out that I just needed to convert the .py file's charset to UTF-8 as that's the set Python 3 uses.
BTW, I used 4-space tabs all the time, so the problem wasn't caused by them.
What I did when the same error popped up: Select everything (Str + A) and press Shift + Tab. So nothing was indented anymore. Now go back to the lines you want to have indented, and put it back how you want it.
It worked for me...
If you use ATOM:
Go to Menu: Packages --> WhiteSpace --> Convert all Tabs to Spaces
Try deleting the indents and then systematically either pressing tab or pressing space 4 times. This usually happens to me when I have an indent using the tab key and then use the space key in the next line.
Your problem is due to your editor limitations/configuration. Some editors provide you of tools to help with the problem by:
Converting tabs into spaces
For example, if you are using Stani's Python editor you can configure it to do it on saving.
Converting spaces into tabs
If you are using ActiveState Komodo you have a tool to 'tabify' your code. As others already pointed, this is not a good idea.
Eclipse's Pydev provides functions "Convert tabs to space-tabs" and "Convert space-tabs to tabs".
I use Notepad++ and got this error.
In Notepad++ you will see that both the tab and the four spaces are the same, but when you copy your code to Python IDLE you would see the difference and the line with a tab would have more space before it than the others.
To solve the problem, I just deleted the tab before the line then added four spaces.
There was a duplicate of this question from here but I thought I would offer a view to do with modern editors and the vast array of features they offer. With python code, anything that needs to be intented in a .py file, needs to either all be intented using the tab key, or by spaces. Convention is to use four spaces for an indentation. Most editors have the ability to visually show on the editor whether the code is being indented with spaces or tabs, which helps greatly for debugging. For example, with atom, going to preferences and then editor you can see the following two options:
Then if your code is using spaces, you will see small dots where your code is indented:
And if it is indented using tabs, you will see something like this:
Now if you noticed, you can see that when using tabs, there are more errors/warnings on the left, this is because of something called pep8 pep8 documentation, which is basically a uniform style guide for python, so that all developers mostly code to the same standard and appearance, which helps when trying to understand other peoples code, it is in pep8 which favors the use of spaces to indent rather than tabs. And we can see the editor showing that there is a warning relating to pep8 warning code W191,
I hope all the above helps you understand the nature of the problem you are having and how to prevent it in the future.
SOULUTION FOR SUBLIME TEXT
My Solution to this problem was to open it in idle editor and then idle editor will uncover your problem
e.g
SUBLIME TEXT
while run:
clock.tick(27)
milli = clock.tick()
seconds = milli/1000
timeForLevel += seconds
print(timeForLevel)
IDLE EDITOR
while run:
clock.tick(27)
milli = clock.tick()
seconds = milli/1000
timeForLevel += seconds
print(timeForLevel)
I am not saying that you should only use idle editor. I'm saying that if you get that error you should check idle editor
I had the same error. I had to add several code lines to an existing *.py file. In Notepad++ it did not work.
After adding the code lines and saving, I got the same error. When I opened the same file in PyCharm and added the lines, the error disappeared.
I oddly ran into a similar issue with one of my .py files. I simply opened the file in Pycharm and pressed Option+Command+L which correctly formats the file contents in one go.
I suspect I was having trouble because I coded this particular .py file through jupyter labs as opposed to my usual choice of sublime text or Pycharm and therefore ran into some hidden indentation issues many answers here have alluded to
Use pylint it will give you a detailed report about how many spaces you need and where.
The following trick has worked for me:
Copy and paste the code in the notepad.
Then from the notepad again select all and copy the code
Paste in my views.py
Select all the newly pasted code in the views.py and remove all the tabs by pressing shift+tab from the keyboard
Now use the tab key again to use the proper indentation
For Anaconda, Spyder users you can go to Source> Fix indentation
If your editor doesn't recognize tabs when doing a search and replace (like SciTE), you can paste the code into Word and search using Ctr-H and ^t which finds the tabs which then can be replace with 4 spaces.
Solving this using Vim editor
Open terminal (Ctrl + Alt + T).
Go to the directory where the file is located (cd <path_to_your_directory>). Ex: cd /home/vineeshvs/work.
Open the file in Vim (vim <file_name>). Ex: vim myfile.txt .
[Optional step] Enable search keyword highlighting in Vim (ESC :set hlsearch)
Go to the line where you have this problem (ESC :<line_number>). Ex: :53 in Vim editor after pressing ESC button once.
Replace tabs using the required number of spaces in Vim (:.,$s/\t/<give_as_many_spaces_as_you_want_to_replace_tab>/gc). Ex: Tab will be replaced with four spaces using the following command: :.,$s/\t/ /gc after pressing ESC button once). This process is interactive. You may give y to replace the tab with spaces and n to skip a particular replacement. Press ESC when you are done with the required replacements.
Well I had the same problem and I realised that the problem is that I copied code from another python editor to sublime.
I was working with jupyter notebook and then I copied the code into sublime. Apparently when you make specific modifications (like moving code in functions) then indentation gets messy and this is where the problem comes from.
So just stick to one editor. If you do so, then you will be having no problem.
For Jupyter users:
CTRL + Shift + P Automatically idents the selection:
While the original question is about self authored code, the search engines lead here for when searching for the title string. An error message one might very likely get when attempting to make use of an already existing library or tool.
For those finding their way here when attempting to use someone elses code; It is a python2 vs. python3 thing, according to Tab Error in Python (an answer which also refers to the relevant section of the PEP8 styleguide.
I got the same errors but could not figure out what I was doing wrong.
So I fixed it by running auto-indent on my code and allowing the machine to fix my fault.
If anyone is wondering how I did that.
Simple.
Go in vim.
Type in G=gg.
This will automatically fix everything. Good luck :)
Sometimes, tab does mess up while indenting. One way is to obviously use the tab and backspace to correctly indent the code.
Another way is to use space 4 times (depending on how much you want to indent).
A weird way that worked for me when nothing else worked, whichever line I getting the error, I backspaced that line to the previous line and then pressed enter. It automatically indented the line to correct position and I was not getting any error after that.
Hopefully, this should help.

Simple Python string code\decode script question

I'm learning Python and for my homework I wrote a simple script that get a string from user like this one: aaaabbbbcccdde and transforms it to a4b4c3d2e1.
Now I've decided to get things more interesting and modified code for continuous input and output in realtime. So I need a possibility to enter symbols and get an output coded with that simple algorithm.
The only problem I've faced with I needed output without '\n' so all the coded symbols were printed consequently in one string e.g: a4b4c3d2e1
But in that case output symbols mixed with my input and eventually the script froze. Obviously I need Enter symbols for input on one string and output it on another string w/o line breaks.
So, could you tell me please is it possible without a lot of difficulties for newbie make up a code that would do something like this:
a - #here the string in shell where I'm always add any symbols
a4b4c3d2e1a4b4c3d2e1a4b4c3d2e1 - #here, on the next string the script continuously outputs results of coding without breaking the line.
import getch
cnt = 1
print('Enter any string:')
user1 = getch.getch()
while True:
buf = getch.getch()
if buf == user1:
cnt += 1
user1 = buf
else:
print(user1, cnt, sep='')
user1 = buf
cnt = 1
so this snippet outputs me something like this:
a4
s4
d4
f4
etc
And in all cases when I'm trying to add end='' to output print() the program sticks.
What is possible to do to get rid of that?
Thanks !
I don't really know the details but I can say that: when you add end='', the program don't freeze, but the output (stdout) does not refresh (maybe due to some optimisation ? I really don't know).
So what you want to do is to flush the output right after you print in it.
print(user1, cnt, sep='', end='')
sys.stdout.flush()
(It is actually a duplicate of How to flush output of print function? )

I dont understand the improper uses of spaces and tabs in indentation error in my code [duplicate]

This question already has answers here:
I'm getting an IndentationError. How do I fix it?
(6 answers)
Closed last month.
I'm trying to create an application in Python 3.2 and I use tabs all the time for indentation, but even the editor changes some of them into spaces and then print out "inconsistent use of tabs and spaces in indentation" when I try to run the program.
How can I change the spaces into tabs? It's driving me crazy.
import random
attraktioner = ["frittfall","bergodalbana","spökhuset"]
class Nojesfalt:
def __init__(self, attraktion):
self.val = attraktion
self.langd = 0
self.alder = 0
#längdgräns för fritt fall
def langdgrans(self):
print("")
self.langd = int(input("Hur lång är du i cm? "))
if self.langd < 140:
print("tyvärr, du är för kort, prova något annat")
return 0
elif self.langd >= 140:
print("håll dig hatten, nu åker vi!")
print(" ")
return 1
#åldersgräns för spökhuset
def aldersgrans(self):
print("")
self.alder = int(input("Hur gammal är du? "))
if self.alder < 10:
print("tyvärr, du är för ung, prova något annat")
return 0
elif self.alder >= 10:
print("Gå in om du törs!")
print(" ")
return 1
#åker attraktion frittfall lr bergodalbana
def aka(self):
print("")
print(self.val)
tal = random.randint(0,100)
if tal < 20:
print("åkturen gick åt skogen, bättre lycka nästa gång")
elif tal >= 20:
print("jabbadabbbadoooooooo")
return 1
#går i spökhuset
def aka1(self):
print("")
print(self.val)
tal = random.randint(0,100)
if tal < 20:
print("du är omringad av spöken och kan inte fortsätta") return 0
elif tal >= 20:
print("Buhuuuuuu, buuuhuuuu")
return 1
#programkod
print("Välkommen till nöjesfältet, vad vill du göra?")
print(" ")
while 1:
vald_attr = input("Vad vill du göra?\n1. frittfall\n2. bergodalbana\n3. spökhuset\n4. Avsluta\n")
if vald_attr == "1":
val = Nojesfalt(attraktioner[0])
if val.langdgrans() == 1:
val.aka()
elif vald_attr == "2":
val = Nojesfalt(attraktioner[1])
val.aka()
elif vald_attr == "3":
val = Nojesfalt(attraktioner[2])
if val.aldersgrans() == 1:
val.aka1()
elif vald_attr == "4":
break
Don't use tabs.
Set your editor to use 4 spaces for indentation.
Make a search and replace to replace all tabs with 4 spaces.
Make sure your editor is set to display tabs as 8 spaces.
Note: The reason for 8 spaces for tabs is so that you immediately notice when tabs have been inserted unintentionally - such as when copying and pasting from example code that uses tabs instead of spaces.
For VSCode users
Ctrl+Shift+P or View->Command Palette.
Type
>Convert Indentation to Spaces
press Enter.
Using the autopep8 command below fixed it for me:
autopep8 -i my_file.py
Documentation for autopep8 linked here.
With the IDLE editor you can use this:
Menu Edit → Select All
Menu Format → Untabify Region
Assuming your editor has replaced 8 spaces with a tab, enter 8 into the input box.
Hit select, and it fixes the entire document.
When using the sublime text editor, I was able to select the segment of my code that was giving me the inconsistent use of tabs and spaces in indentation error and select:
view > indentation > convert indentation to spaces
which resolved the issue for me.
It is possible to solve this problem using notepad++ by replacing Tabs with 4 Spaces:
Choose Search -> Find... or press Ctrl + F
Select the Replace tab
In the box named Search Mode choose Extended(\n, \r, \t, \0, \x...)
In the field Find what : write \t
In the field Replace with : press Space 4 times. Be sure that there is nothing else in this field.
Click on the button Replace All
Generally, people prefer indenting with space. It's more consistent across editors, resulting in fewer mismatches of this sort. However, you are allowed to indent with tab. It's your choice; however, you should be aware that the standard of 8 spaces per tab is a bit wide.
Concerning your issue, most probably, your editor messed up. To convert tab to space is really editor-dependent.
On Emacs, for example, you can call the method 'untabify'.
On command line, you can use a sed line (adapt the number of spaces to whatever pleases you):
sed -e 's;\t; ;' < yourFile.py > yourNedFile.py
If you are using Sublime Text for Python development, you can avoid the error by using the package Anaconda. After installing Anaconda, open your file in Sublime Text, right click on the open spaces → choose Anaconda → click on autoformat. Done. Or press Ctrl + Alt + R.
Sublime Text 3
In Sublime Text, WHILE editing a Python file:
Sublime Text menu > Preferences > Settings - Syntax Specific :
Python.sublime-settings
{
"tab_size": 4,
"translate_tabs_to_spaces": true
}
I recently had the same problem and found out that I just needed to convert the .py file's charset to UTF-8 as that's the set Python 3 uses.
BTW, I used 4-space tabs all the time, so the problem wasn't caused by them.
What I did when the same error popped up: Select everything (Str + A) and press Shift + Tab. So nothing was indented anymore. Now go back to the lines you want to have indented, and put it back how you want it.
It worked for me...
If you use ATOM:
Go to Menu: Packages --> WhiteSpace --> Convert all Tabs to Spaces
Try deleting the indents and then systematically either pressing tab or pressing space 4 times. This usually happens to me when I have an indent using the tab key and then use the space key in the next line.
Your problem is due to your editor limitations/configuration. Some editors provide you of tools to help with the problem by:
Converting tabs into spaces
For example, if you are using Stani's Python editor you can configure it to do it on saving.
Converting spaces into tabs
If you are using ActiveState Komodo you have a tool to 'tabify' your code. As others already pointed, this is not a good idea.
Eclipse's Pydev provides functions "Convert tabs to space-tabs" and "Convert space-tabs to tabs".
I use Notepad++ and got this error.
In Notepad++ you will see that both the tab and the four spaces are the same, but when you copy your code to Python IDLE you would see the difference and the line with a tab would have more space before it than the others.
To solve the problem, I just deleted the tab before the line then added four spaces.
There was a duplicate of this question from here but I thought I would offer a view to do with modern editors and the vast array of features they offer. With python code, anything that needs to be intented in a .py file, needs to either all be intented using the tab key, or by spaces. Convention is to use four spaces for an indentation. Most editors have the ability to visually show on the editor whether the code is being indented with spaces or tabs, which helps greatly for debugging. For example, with atom, going to preferences and then editor you can see the following two options:
Then if your code is using spaces, you will see small dots where your code is indented:
And if it is indented using tabs, you will see something like this:
Now if you noticed, you can see that when using tabs, there are more errors/warnings on the left, this is because of something called pep8 pep8 documentation, which is basically a uniform style guide for python, so that all developers mostly code to the same standard and appearance, which helps when trying to understand other peoples code, it is in pep8 which favors the use of spaces to indent rather than tabs. And we can see the editor showing that there is a warning relating to pep8 warning code W191,
I hope all the above helps you understand the nature of the problem you are having and how to prevent it in the future.
SOULUTION FOR SUBLIME TEXT
My Solution to this problem was to open it in idle editor and then idle editor will uncover your problem
e.g
SUBLIME TEXT
while run:
clock.tick(27)
milli = clock.tick()
seconds = milli/1000
timeForLevel += seconds
print(timeForLevel)
IDLE EDITOR
while run:
clock.tick(27)
milli = clock.tick()
seconds = milli/1000
timeForLevel += seconds
print(timeForLevel)
I am not saying that you should only use idle editor. I'm saying that if you get that error you should check idle editor
I had the same error. I had to add several code lines to an existing *.py file. In Notepad++ it did not work.
After adding the code lines and saving, I got the same error. When I opened the same file in PyCharm and added the lines, the error disappeared.
I oddly ran into a similar issue with one of my .py files. I simply opened the file in Pycharm and pressed Option+Command+L which correctly formats the file contents in one go.
I suspect I was having trouble because I coded this particular .py file through jupyter labs as opposed to my usual choice of sublime text or Pycharm and therefore ran into some hidden indentation issues many answers here have alluded to
Use pylint it will give you a detailed report about how many spaces you need and where.
The following trick has worked for me:
Copy and paste the code in the notepad.
Then from the notepad again select all and copy the code
Paste in my views.py
Select all the newly pasted code in the views.py and remove all the tabs by pressing shift+tab from the keyboard
Now use the tab key again to use the proper indentation
For Anaconda, Spyder users you can go to Source> Fix indentation
If your editor doesn't recognize tabs when doing a search and replace (like SciTE), you can paste the code into Word and search using Ctr-H and ^t which finds the tabs which then can be replace with 4 spaces.
Solving this using Vim editor
Open terminal (Ctrl + Alt + T).
Go to the directory where the file is located (cd <path_to_your_directory>). Ex: cd /home/vineeshvs/work.
Open the file in Vim (vim <file_name>). Ex: vim myfile.txt .
[Optional step] Enable search keyword highlighting in Vim (ESC :set hlsearch)
Go to the line where you have this problem (ESC :<line_number>). Ex: :53 in Vim editor after pressing ESC button once.
Replace tabs using the required number of spaces in Vim (:.,$s/\t/<give_as_many_spaces_as_you_want_to_replace_tab>/gc). Ex: Tab will be replaced with four spaces using the following command: :.,$s/\t/ /gc after pressing ESC button once). This process is interactive. You may give y to replace the tab with spaces and n to skip a particular replacement. Press ESC when you are done with the required replacements.
Well I had the same problem and I realised that the problem is that I copied code from another python editor to sublime.
I was working with jupyter notebook and then I copied the code into sublime. Apparently when you make specific modifications (like moving code in functions) then indentation gets messy and this is where the problem comes from.
So just stick to one editor. If you do so, then you will be having no problem.
For Jupyter users:
CTRL + Shift + P Automatically idents the selection:
While the original question is about self authored code, the search engines lead here for when searching for the title string. An error message one might very likely get when attempting to make use of an already existing library or tool.
For those finding their way here when attempting to use someone elses code; It is a python2 vs. python3 thing, according to Tab Error in Python (an answer which also refers to the relevant section of the PEP8 styleguide.
I got the same errors but could not figure out what I was doing wrong.
So I fixed it by running auto-indent on my code and allowing the machine to fix my fault.
If anyone is wondering how I did that.
Simple.
Go in vim.
Type in G=gg.
This will automatically fix everything. Good luck :)
Sometimes, tab does mess up while indenting. One way is to obviously use the tab and backspace to correctly indent the code.
Another way is to use space 4 times (depending on how much you want to indent).
A weird way that worked for me when nothing else worked, whichever line I getting the error, I backspaced that line to the previous line and then pressed enter. It automatically indented the line to correct position and I was not getting any error after that.
Hopefully, this should help.

How do I read just part of a string?

For my program I ask the user to input a command. If the user writes: Input filename (filename being any possible name of a file in the computer) I want my program to only read Input so it knows what if statement to use and then open the file that the user wrote.
There is also another part where I have to do a similar task, where the user inputs: score n goals.(n is the top number of players the program has to read from a list) I want the program to differentiate this from 2 other similar tasks (score n misses and score n passes).
I am not sure if I'm approaching this the correct way, but this was my try for the first case I talked about, but it doesn't work.
user_input = input ('File name:')
input_lowered = user_input.lower()
command = input_lowered[0:4]
if command == 'input' :
fp = open ("soccer.part.txt")
else :
user_upper = input ('Input name:')
Thanks in advance for any clue of how I should aim at fixing this!!!
You can do that as follows:
your_string[0:5]
This will get the first five characters of the string as a string.
If you would like to grab a part of the string from the start then you can use:
my_string[:number]
if you would like to grab a part of the string from the end:
my_string[-number:]

How to debug indentation errors in python

I am trying to write my very first python script. This was working but then after some slight refactoring I have, apparently, broken the indentation. I can not determine what is the problem. The interpretor complains about the following method. Can someone point it out?
def dataReceived(self, data):
a = data.split(':')
print a
if len(a) > 1:
command = a[0]
content = a[1]
msg = ""
if command == "iam":
self.name = content
msg = self.name + " has joined"
elif command == "msg":
msg = self.name + ": " + content
print msg
The error reads: File "python_server.py", line 17
a = data.split(':')
^ IndentationError: expected an indented block
I encountered a similar problem using Sublime Text 2.
To solve, click on the "Tab Size" at the bottom of the editor, and choose "Convert Indentation to Tabs".
You start using a text editor that allows you to show indents, and you become consistent about using spaces instead of tabs, and you enforce that in your editor.
There are a great number of things you can do here:
Use an editor that can show control characters (like vi with set list).
Use a hex dumper program like od -xcb.
Just delete the white space at the start of that line and re-insert it (may want to check the preceding line as well).
if you're using the "Sublime Text 2" editor, then I found this answer helpful - it details how to turn on whitespace characters and also convert tabs to whitespaces
sublime-text-2-view-whitespace-characters
Try Editra - www.editra.org
Your code looks fine, syntax seems fine...your text editor may be creating your errors. Review your file with Editra to see/review indentation levels.
Editra saved my sanity - I thought I had correct syntax when viewing my script in Text Editors including Notepad++ with python indent plugin. However, when I would run the script, it would throw off indentation errors every time. I finally opened the script up in Editra, and I could see the problem. Notepad++ and other text editors did not show correct indentations/tabs/spaces. Editra showed errors e.g. unexpected spaces, tabs - which I was able to correct.
Editra will auto-indent your script [and show errors -tabs, spaces -that may not show up in other text editors].
If you have indent errors it will show up as blue underlined segment;
If you are writing script [adding/deleting lines] Editra will auto-indent the script.
**I would suggest opening your script and editing it in Editra.
Hope this helps!
Best of luck.
str8arrow

Categories

Resources