从 '\\n' 到 '\n'
Go from '\\n' to '\n'
我想从控制台获得一个多行文本输入。因为我想在单个输入中完成所有操作,所以我必须在中间标记“\n”以指示不同的行。
在我得到输入后,我想将文本保存在一个矩阵中,其中每一行都是文本中的一行,单词分开。
这是我的职责:
def saveText(text):
text = text[6:len(text)-6]
line = 0
array = [[]]
cur = ""
for i in range (len(text)):
if (text[i] == '\n'):
line+=1
array.append([])
else:
if ((text[i] == ' ' or text[i] == ',' or text[i] == ';' or text[i] == '.') and cur != ""):
array[line].append(cur)
cur = ""
else:
cur += text[i]
return array
但是,当我打印变量 array 时,它显示为只有一行的矩阵,除了 '\n' 被算作单词外,它们还显示为 ' \n'.
谁能帮我解决这个问题?
您没有提供用于测试的输入字符串,所以我自己制作了一个。您可以使用 .split()
来拆分新行和空格(或您想要的任何其他内容)。
编辑:我想我现在明白你的意思了。我认为您在要求用户输入时试图让用户输入换行符 \n
。 。我将 link 的答案整合到下面的代码中。
如果您希望用户在从他们那里获取输入时手动写入 \n
,那么您需要将 text.splitlines()
更改为 text.split('\n'). You could also replace
\nwith
\nby using
text.replace('\n', '\n')`。
但是,我认为只使用如下所示的多行输入并在上面进一步讨论会更不容易出错。
lines = []
while True:
line = input()
if line:
lines.append(line)
else:
break
input_text = '\n'.join(lines)
def save_text(text):
lines = text.splitlines()
matrix = []
for line in lines:
matrix.append(line.split(' '))
return matrix
print(save_text(input_text))
来自用户的输入如下所示:
hello how
are you
doing this fine
day?
输出:
[['hello', 'how'], ['are', 'you'], ['doing', 'this', 'fine'], ['day?']]
text = "line1: hello wolrd\nline2: test\nline2: i don't know what to write"
lines = [x.split() for x in text.split("\n")]
print(lines)
这将 return:
[['line1:', 'hello', 'wolrd'], ['line2:', 'test'], ['line2:', 'i', "don't", 'know', 'what', 'to', 'write']]
思路和Stuart的方案一样,只是效率高了一点。
我想从控制台获得一个多行文本输入。因为我想在单个输入中完成所有操作,所以我必须在中间标记“\n”以指示不同的行。 在我得到输入后,我想将文本保存在一个矩阵中,其中每一行都是文本中的一行,单词分开。
这是我的职责:
def saveText(text):
text = text[6:len(text)-6]
line = 0
array = [[]]
cur = ""
for i in range (len(text)):
if (text[i] == '\n'):
line+=1
array.append([])
else:
if ((text[i] == ' ' or text[i] == ',' or text[i] == ';' or text[i] == '.') and cur != ""):
array[line].append(cur)
cur = ""
else:
cur += text[i]
return array
但是,当我打印变量 array 时,它显示为只有一行的矩阵,除了 '\n' 被算作单词外,它们还显示为 ' \n'.
谁能帮我解决这个问题?
您没有提供用于测试的输入字符串,所以我自己制作了一个。您可以使用 .split()
来拆分新行和空格(或您想要的任何其他内容)。
编辑:我想我现在明白你的意思了。我认为您在要求用户输入时试图让用户输入换行符 \n
。
如果您希望用户在从他们那里获取输入时手动写入 \n
,那么您需要将 text.splitlines()
更改为 text.split('\n'). You could also replace
\nwith
\nby using
text.replace('\n', '\n')`。
但是,我认为只使用如下所示的多行输入并在上面进一步讨论会更不容易出错。
lines = []
while True:
line = input()
if line:
lines.append(line)
else:
break
input_text = '\n'.join(lines)
def save_text(text):
lines = text.splitlines()
matrix = []
for line in lines:
matrix.append(line.split(' '))
return matrix
print(save_text(input_text))
来自用户的输入如下所示:
hello how
are you
doing this fine
day?
输出:
[['hello', 'how'], ['are', 'you'], ['doing', 'this', 'fine'], ['day?']]
text = "line1: hello wolrd\nline2: test\nline2: i don't know what to write"
lines = [x.split() for x in text.split("\n")]
print(lines)
这将 return:
[['line1:', 'hello', 'wolrd'], ['line2:', 'test'], ['line2:', 'i', "don't", 'know', 'what', 'to', 'write']]
思路和Stuart的方案一样,只是效率高了一点。