0
環境変数を"PERIOD"
に対応するように設定しました。次のエラーが表示されます。目標は、コードがenv
変数に応答し、それらを使用してユーザーが送信したデータセットの区切り文字をトリガーすることです。.joinのステートメントの型エラー
Traceback (most recent call last):
File "./qwikifwlistmgr", line 103, in <module>
delim(in_list)
File "./qwikifwlistmgr", line 94, in delim
e = ".".join(e)
TypeError
私はすべての声明に返事があることを確認しました。しかし今、私は他に何が間違っているのか分かりません。私は何かシンプルな感じを得るが、私はそれを見ることができない。
#! /usr/bin/env python
import os
import sys
import re
x = os.getenv("QWIKIFWLISTMGR_DELIMITER")
in_list = sys.argv
def ifw(in_list):
usr_choice = (in_list)[1]
if usr_choice == 'i':
print(int_sort(in_list))
elif usr_choice =='f':
print(float_sort(in_list))
elif usr_choice == 'w':
print(word_sort(in_list))
else:
return in_list
def float_sort(in_list):
float_sort = "test"
sorted_float = "test"
float_sort = in_list[2:]
float_sort = ''.join(float_sort)
#float_sort1 = " ".join(list((re.findall(r"((?<!\S)\d+(?!\S))", float_sort))))
#float_sort2 = ' '.join(list(re.findall(r"(\d+\.\d+)", float_sort)
float_sort = " ".join(re.findall(r"\d*\.\d+|\d+", float_sort))
sorted_float = sorted(float_sort, key=len)
return float_sort
def word_sort(in_list):
word_sort = " 1a "
word_sort = sorted(in_list[2:], key=len) #in_list must be 2 because the program will view usr input as a word
for i in word_sort:
punctuation = '.',',',';','!','/','"','?' #strips punctuation from words
if i in punctuation: #removes punctuation
word_sort = word_sort.replace(i," ")
#word_sort= sorted(word_sort, key=lambda L: (L.lower(), L))
word_sort= " ".join(sorted(word_sort, key=lambda L: (L.lower(), L))) #takes string and sorts by length giving priority to upper over lower when tied
sorted_word = " 1a " #left for testing
sorted_word = re.sub("\S+\d\S+", "", word_sort).strip() #removes any word with a number in it
sorted_word = "".join(sorted_word) #joins the results back into a string
return sorted_word
def int_sort(in_list):
int_sort = "3"
in_list = " ".join(in_list[1:]) # takes information from argv and creates a string with it
int_sort = " ".join(list(reversed(re.findall(r"(?<!\S)\d+(?!\S)", in_list))))
# find all looks for a pattern of anything but a space... any number. anything besides a space in the in_list and returns it
#reveresd flips that return backwards
# list turns that into a list and join makes it a string again
return int_sort
def delim(in_list):
z = (ifw(in_list))
x = "screw python"
e = (ifw(in_list))
x = os.getenv('QWIKIFWLISTMGR_DELIMITER')
if x == 'BLANK':
e = ' '.join(ifw(in_list))
return e
elif x =='TAB':
e = ifw(in_list)
e = '\t'.join(e)
return e
elif x =='NL':
e = ifw(in_list)
e = '\n'.join(e)
return e
elif x =='COLON':
e = ifw(in_list)
e = ':'.join(e)
return e
elif x =='COMMA':
e = ifw(in_list)
e = ','.join(e)
return e
elif x =='SEMICOLON':
e = ifw(in_list)
e = ';'.join(e)
return e
elif x =='PERIOD':
e = ".".join(e)
return e
elif x =='SLASH':
e = ifw(in_list)
e = '/'.join(e)
return e
else:
e = ifw(in_list)
return e
delim(in_list)
'join()'で使う前に 'e'をチェックしてください。 'print(type(e))'または少なくとも 'print(e)' – furas