Python ASCII编码程序求助:CSV导入消息编码后字符无法拼接
Hey there! Let's get your encoded messages stitching back together properly. From what you've shared, it sounds like you're successfully transforming each character (ASCII value + 2), but you're not combining those individual encoded characters back into a full string. That's a super common small oversight—let's fix it.
First, Let's Diagnose the Likely Problem
I bet your current code is collecting each encoded character into a list, but stopping there instead of merging that list into a single string. For example, if you had something like this:
def encode(msg): encoded = [] for char in msg: encoded.append(chr(ord(char) + 2)) # Oops—returning the list instead of a joined string! return encoded messages = ['A famous Scottish victory...', "How high is Scotland's tallest..."] encoded_output = [encode(msg) for msg in messages] print(encoded_output)
This would spit out lists of characters instead of full encoded strings, which matches what you're describing.
The Fix: Use str.join() to Combine Characters
The key is to take that list of encoded characters and merge them into a single string with ''.join(). Here's the corrected code:
def encode_message(msg): encoded_chars = [] for char in msg: # Apply your encoding logic: ASCII value +2 → back to character encoded_char = chr(ord(char) + 2) encoded_chars.append(encoded_char) # Critical step: join the list into a single string return ''.join(encoded_chars) # Process your imported CSV messages original_messages = ['A famous Scottish victory in the First War of Scottish Independence - bit.ly/1yIAb8Q', "How high is Scotland's tallest..."] encoded_messages = [encode_message(msg) for msg in original_messages] # Now you'll get full encoded strings instead of character lists! print(encoded_messages)
Even More Concise Version
If you want to streamline the code, you can use a generator expression directly inside join()—no need for an explicit list:
def encode_message(msg): return ''.join(chr(ord(char) + 2) for char in msg)
This does the exact same thing, just in a more compact way.
Quick Notes to Keep in Mind
- If your CSV ever includes non-ASCII characters,
ord()might throw errors—you'd need to handle encoding (like UTF-8) explicitly, but since your sample messages are English, this shouldn't be an issue right now. - Watch out for characters near the end of the printable ASCII range (like
~, which is ASCII 126)—adding 2 will push them into non-printable territory, which might not be intended, but that's up to your specific use case.
内容的提问来源于stack exchange,提问作者Computing User

